我该如何创建一个正则表达式,使其与除以下URL之外的所有地方的“政治”关键字匹配?我正在尝试使用否定前瞻。
字符串是一段文本,如下所示:
政治很好。
http://www.foxnews.com/politics/2018/09/07/omarosa-plans-another-tape-release-next-week-report.html
政治不好。
我想要第一个和第三个匹配项,但不希望第二个匹配项,它是URL的一部分。
答案 0 :(得分:1)
您可以在后面使用否定的外观(如果您的正则表达式工具支持):
(?<!http:.*)politics
正则表达式使用negative look behind
(查找:'http:'
,后跟任意字符多次),然后匹配'politics
'。
如果该行包含“ http:
”,则会跳过匹配。
答案 1 :(得分:0)
如果不使用正则表达式,使用您正在使用的任何编程语言,这可能会更容易一点(即,可能更容易解析文本并忽略以“ http”开头的任何字符串,然后仅使用字符串运算符进行匹配)您要查找的特定文本)。
也就是说,您可以使用问题中提到的否定先行词来排除单词的匹配项,当其后是正斜杠时,中间应有任意数量的非空格字符。如果网址未以您要匹配的单词结尾而不出现正斜杠,则此方法将有效。。例如:
politics(?!\S*\/)