如何跳过锚标记中已有的域?

时间:2013-09-06 01:20:04

标签: regex html-parsing

以下正则表达式found here与下面的域匹配得很好,但我不希望它匹配已经在锚标记中的域(最后一个示例)请注意,此匹配将检测这些文本句子中的案例。

((?: http| https)://)?[.0-9a-z-]+\.[a-z]{2,6}(?::[0-9]{1,5}+)?(?:/[!$'()*+,._a-z-]++){0,9}(?:/[!$'()*+,._a-z-]*)?(?:\?[!$&'()*+,.=_a-z-]*)?

在句子或段落中匹配:

www.domain.com
domain.com
this.is.a.special.url.domain.com/hello 
http://domain.com
http://www.domain.com
http://www.domain.com/
http://www.domain.com/index.html
http://www.domain.com/index.html?source=library

但是,如何将正则表达式更改为与锚标记中已有的域不匹配?

<a href="http://www.usertesting.com">hello</a>

1 个答案:

答案 0 :(得分:1)

你可以添加负面的lookbehind来排除href="href='之后的匹配:

(?<!href=["'])((?: http| https)://)?[.0-9a-z-]+\.[a-z]{2,6}(?::[0-9]{1,5}+)?(?:/[!$'()*+,._a-z-]++){0,9}(?:/[!$'()*+,._a-z-]*)?(?:\?[!$&'()*+,.=_a-z-]*)?