正则表达式的字符序列不等于

时间:2016-04-11 18:43:28

标签: regex

我有一个如下所示的网址格式:^foo\/(?P<prefix>[a-z]+)\/bar\/$

我需要中间的字符序列与另一个字符序列不同,让我们说ab

foo/somestring/bar/foo/abcde/bar/应该匹配,但foo/ab/bar/不应该匹配。

我来到^foo\/(?P<prefix>(?!ab)[a-z]+)\/bar\/$,但与foo/abcde/bar/不匹配。

1 个答案:

答案 0 :(得分:1)

您忘了在/

之前限制负前瞻值
^foo\/(?P<prefix>(?!ab\/)[a-z]+)\/bar\/$
                      ^^ 

请参阅regex demo

如果您使用(?!ab),则会禁止匹配以ab开头的值。添加尾随边界使得它不允许在负前瞻内部等于该值的任何内容。