正则表达式匹配包含某些字符串而不是其他字符串的行

时间:2017-01-09 21:04:03

标签: regex

我有这样的台词:

example.com/p/stuff/...
example.com/page/thing/...
example.com/page/stuff/...
example.com/page/other-stuff/...
etc

其中点表示连续的URL路径。我想选择包含/page/的网址,而不是thing/。因此,从上面的列表中我们将选择:

example.com/page/stuff/...
example.com/page/other-stuff/...

3 个答案:

答案 0 :(得分:1)

您需要使用否定前瞻:

example\.com\/page\/(?!thing\/).*

Demo

答案 1 :(得分:1)

.*?\/page\/[^(thing)].*

这是用于匹配/page/未跟thing

的字符串的正则表达式

建议添加懒惰的evalation,因为你当时推进了一个char,性能更好!

答案 2 :(得分:1)

使用以下正则表达式模式:

.*?\/page\/(?!thing\/).*

https://regex101.com/r/19wh1w/2

(?!thing\/) - 否定前瞻断言确保page/部分后面没有thing/