当我尝试编写正则表达式以匹配锚点标记时,锚点标记将href中的链接作为组2,锚标记的文本作为组3,如下所示:
<a( href=\"(\S+)\")?.*>([a-zA-Z0-9 ]+)<\/a>
匹配此文字:
hello there <a href="Hello/world1">Hello World1</a><b>How are You<b><a href="Hello/world2">Hello World2</a>
但是,对于第3组,它不匹配Hello World1
,而是匹配Hello World2
。有人可以帮我写一个正则表达式来匹配group2 = Hello/world1
和group2 = Hello World2
。
感谢。
答案 0 :(得分:1)
您给出的示例的正确语法如下所示:
(?:<a(?: href=[^>]+>([^<]+)<\/a>(?!<a)?))+
但是使用正则表达式来解析html是非常不推荐的,因为语言解析器会更有效率,并且能够处理html中可能出现的所有可能情况。