在 HTML 源代码中查找尚未标记的 URL.忽略标记的网址



>我想在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后面不会跟任何类似于"或">"(标签的右括号)的内容

最新更新