我正在尝试理解正则表达式:
我只需匹配 text_01 和 text_02 并过滤掉标记。
<span>text_01<b>text_02</b>
我试过这样做:
(?<=<span>)(([^>]+)<b>)(.+?)(?=</b>)
但是它捕获了3个组,并且完全匹配包含一个标记。
text_01<b>text_02
您是否可以就如何构建正则表达式提供建议?正则表达式的完整匹配仅包含文本而没有标记?
答案 0 :(得分:0)
通过使用非捕获组,您可以将中间<b>
标记排除为捕获组,但如果不包含标记,您将永远无法获得完整匹配。这是不可能的,正则表达式在捕获时不能跳过一部分。匹配必须是连续的。
(?<=<span>)(.+?)(?:<b>)(.+?)(?=<\/b>)
text_01<b>text_02
text_01
text_02
答案 1 :(得分:0)
使用正则表达式解析HTML会变得非常复杂。通常它是not advised practice并且更好地使用解析器(某些库使用您正在使用的任何语言)。
但是,如果您确定文字内容没有<
或>
,并且这些<
和>
未嵌套,您可以使用此:
这仅匹配一对<
和>
后面的文字。
如果足以测试该文本后跟<
,则可以简单地说: