我有一个如下所示的网址格式:^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/
不匹配。
答案 0 :(得分:1)
您忘了在/
:
^foo\/(?P<prefix>(?!ab\/)[a-z]+)\/bar\/$
^^
请参阅regex demo
如果您使用(?!ab)
,则会禁止匹配以ab
开头的值。添加尾随边界使得它不允许在负前瞻内部等于该值的任何内容。