2016-04-11 5 views
1

У меня есть шаблон URL, который выглядит так: ^foo\/(?P<prefix>[a-z]+)\/bar\/$.Regex для последовательности символов, которая не равна

Мне нужна последовательность символов в середине, чтобы отличаться от другой последовательности символов, допустим, ab.

foo/somestring/bar/ и foo/abcde/bar/ должно соответствовать, но foo/ab/bar/ не должно.

Я зашел так далеко, как ^foo\/(?P<prefix>(?!ab)[a-z]+)\/bar\/$, но это не соответствует foo/abcde/bar/.

ответ

1

Вы просто забыли о не ограничивая отрицательное значение опережения до /:

^foo\/(?P<prefix>(?!ab\/)[a-z]+)\/bar\/$ 
         ^^ 

Смотрите regex demo

Если вы используете (?!ab), он запрещает соответствующие значения, которые начинаются с ab. Добавление конечной границы запрещает все, что соответствует этому значению внутри отрицательного вида.

Смежные вопросы