我正在尝试使用 Java 中的正则表达式从 2 个标签之间的多行字符串中提取内容。例如,内容可能如下所示:
--_000_CAKETFEgg78oKKJPNySnxF4BgQoh9ifHP4XzXGeJddUvOtz5wmailgm_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
hello test
...
..
!@#!@%$#^%$&*^(*)*()
..
..
..
..
--_000_CAKETFEgg78oKKJPNySnxF4BgQoh9ifHP4XzXGeJddUvOtz5wmailgm_
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
hello test<br><br>..<br>!@#!@%$#^%$&*^(*)*()<br>.<br><br>.<br>.<br>.<br><br><br><br>.<br><br>
--_000_CAKETFEgg78oKKJPNySnxF4BgQoh9ifHP4XzXGeJddUvOtz5wmailgm_
我只想提取 --_000_CAKETFEgg78oKKJPNySnxF4BgQoh9ifHP4XzXGeJddUvOtz5wmailgm_
边界之间的内容。
我使用了如下所示的正则表达式:--_000_CAKETFEgg78oKKJPNySnxF4BgQoh9ifHP4XzXGeJddUvOtz5wmailgm_\n?[.\n]+\n?--_000_CAKETFEgg78oKKJPNySnxF4BgQoh9ifHP4XzXGeJddUvOtz5wmailg m_
但是这不起作用。我的正则表达式应该是什么来提取内容?另外,提取时,边界标签是否会与内容一起包含在内?
最佳答案
我强烈建议不要使用正则表达式进行解析。他们不太适合这样做。只需编写一个解析器来迭代您的输入,搜索开始标记,设置标志,记录所有后续行,识别结束标记并重置标志。比正则表达式更容易完成并且更灵活。
关于java - 用于获取多行字符串中 2 个标签之间的内容的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7875526/