正则表达式:匹配行缺少word1,除了它们包括word2

时间:2016-01-31 18:54:30

标签: regex preg-match

我正在寻找与某些网址匹配的正则表达式:

我希望匹配任何网址,除非它们包含单词“Koeln”或者如果它们包含单词“Karneval”(无论它们是否包含Koeln)。

的exaple:

1)http://www.news.com/Report-Deutschland/Panorama/Deutschland/story.html

2)http://www.news.com/Koeln/Karneval/story.html

3)http://www.news.com/Koeln/Koelnaktuell/story.html

1)和2)应匹配。 1)因为它不包括“Koeln”和2)因为它包括“Karneval” 3)不应该匹配,因为它包括“Koeln”但不包括“Karneval”

我使用正面/负面前瞻尝试了许多不同的正则表达式,但到目前为止它们都没有。

我打算用PHP中的preg实现正则表达式。

1 个答案:

答案 0 :(得分:0)

不确定这是否是最佳方法,但您可以试一试,看看它是否适合您:

(http://.*?/Karneval.*$|http://www\.news\.com(?!/Koeln).*$)

我基本上只是做了两个表达式...一个匹配Karneval,一个在/Koeln之后找不到www.news.com

以下是您可以尝试的演示: Regex101 Demo

希望这对你有用,或者至少指出你正确的方向。