匹配<a> tags that do not contain specific URL query</a>的正则表达式

时间:2015-04-01 16:04:50

标签: regex html-parsing query-string

我需要一个正则表达式,它将选择所有不包含特定查询的<a>标记。例如,这是一个标签列表:

<!-- valid -->
<a href="testsite.com">Test Content</a>
<a href="testsite.com?source=facebook">Test Content</a>
<a href="testsite.com?test=123">Test Content</a>
<a href="testsite.com/path/morepath">Test Content</a>

<!-- invalid (query string is test=abc) -->
<a href="testsite.com?test=abc">Test Content</a>

如何编写只选择 的查询字符串为test=abc的链接的正则表达式。我已经搜遍了Stack Overflow,虽然我理解负面前瞻/外观的概念,但我似乎无法让它发挥作用。

我正在开发一个自定义RSS源,用于在第三方网站上宣传内容。我正在使用WordPress循环来提取内容,动态查找属于我们网站的链接并添加查询字符串。完成后我需要找到所有没有查询字符串的链接,这样我就可以根据第三方网站的要求删除标签。我希望这会对此有所了解。

1 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

<a href="(?![^>]*?test=abc">[^"]*?>)[^"]*">([^<]+)<\/a>

请参阅demo