我试图不捕获锚标记,所以我用了
(?!([^\<]+)<\/a>)(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])
排除定位标记,并选择定位标记中不存在的网址,但在这种情况下失败:
<a href="www.google.com"> <b> Google Homepage </b> </a>
由于左尖括号。
所以我想到了使用
(?!(<a.+)<\/a>)(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])
但这不起作用吗?
任何人都请解释为什么这不起作用,以及什么可能解决我的问题。
希望我解释了这个问题,在此先感谢您的帮助。
答案 0 :(得分:1)
从不使用正则表达式解析html。只是不要。并发症太多了,使用htmlparser
之类的方法就更容易了。该链接应该可以帮助您确定:https://tomassetti.me/parsing-html/如果您不想转到该链接,以下是不同解析器的要旨:
Java
C#
Python
JavaScript
浏览器
Node.js
答案 1 :(得分:0)
尝试使用此:
(a\shref=".+"|\/?b|Google Homepage|\/?a)