>我想在HTML源代码中找到URL。但只有周围没有标签的 URL。我想出了这个:
(?<!")((http(s)?://|http(s)?://www.|(?<!/)www.)([w._-/&%]+))(?!</a>)
它很好地避免了作为链接一部分的 URL,但也可以找到标记的 URL......我认为通过测试"不后跟结束 a 标签",我可以避免标记的 URL......错误在哪里
<a href="https://foo.com">https://www.foo.com</a> <- should not hit
<span class="bar>www.test.de</span> <-HIT
"http://www.test.de" <- HIT
<a href="http://test.de">http://www.foo.com/_manno/Propello&%_-/ramblay</a> should not HIT
<span>http://www.test.de/alala </span> <-HIT
我在调试上的正则表达式
要使您的示例正常工作 - 只需将前瞻(在正则表达式末尾)替换为:
(?![^<]*</a>)
附言
如果我有类似的目标 - 我希望以下结构来 HIT:
<span class="bar>"http://www.my.test"</span> <- I'd want this to HIT ;)
"http://www.test.de" <- I'd want this to HIT too (while not inside a tag)
<a href="http://www.test.de" option="2"> <- should NOT hit
如果您的目标与我刚才描述的目标匹配 - 则完全删除后瞻并将相应的前瞻替换为:
(?![^<>]*(>|</a>))
这基本上意味着URL后面不会跟任何类似于"或">"(标签的右括号)的内容