正则表达式除URL内的任何地方都与关键字匹配

时间:2018-11-15 18:45:33

标签: javascript regex

我该如何创建一个正则表达式,使其与除以下URL之外的所有地方的“政治”关键字匹配?我正在尝试使用否定前瞻。

字符串是一段文本,如下所示:

  

政治很好。
  http://www.foxnews.com/politics/2018/09/07/omarosa-plans-another-tape-release-next-week-report.html
  政治不好。

我想要第一个和第三个匹配项,但不希望第二个匹配项,它是URL的一部分。

2 个答案:

答案 0 :(得分:1)

您可以在后面使用否定的外观(如果您的正则表达式工具支持):

(?<!http:.*)politics

正则表达式使用negative look behind(查找:'http:',后跟任意字符多次),然后匹配'politics'。

如果该行包含“ http:”,则会跳过匹配。

答案 1 :(得分:0)

如果不使用正则表达式,使用您正在使用的任何编程语言,这可能会更容易一点(即,可能更容易解析文本并忽略以“ http”开头的任何字符串,然后仅使用字符串运算符进行匹配)您要查找的特定文本)。

也就是说,您可以使用问题中提到的否定先行词来排除单词的匹配项,当其后是正斜杠时,中间应有任意数量的非空格字符。如果网址未以您要匹配的单词结尾而不出现正斜杠,则此方法将有效。。例如:

politics(?!\S*\/)