Регулярное выражение для соответствия строк, которые содержат подстроку, но не должны сопровождаться определенной подстрокой - PullRequest
0 голосов
/ 28 ноября 2018

В моем случае у меня есть несколько URL-адресов, и мне нужно было сопоставить некоторые URL-адреса, которые не содержат ни abc, ни xyz. Например, следующие URL-адреса следующие: *
- безопасный / api / abc / sometext
- безопасный / api / xyz / sometext
- безопасный / api / обязательный / sometext
- незащищенный / api / sometext / sometext

Ожидаемый результат

  • безопасный / API / обязательный / sometext

URL должны начинаться с secure/api/

1 Ответ

0 голосов
/ 28 ноября 2018

Я думаю, что это может решить вашу проблему

^secure\/api\/(?!.*(abc|xyz|\/{2,})).+\/sometext$

Объяснение

^secure - Соответствует слову secure в началестрока.

\/ - соответствует буквальному символу /.

(?!.*(abc|xyz|\/{2,})).+ - здесь ?! обозначает отрицательный прогноз, который.

  -This complete sentence means match any thing except word abc and xyz and '//'.

$ - Это указывает на конец строки.

Вот еще одна версия, которая, я думаю, будет работать лучше

^secure\/api\/(?:(?!.*(abc|xyz|\/{2,})).+)\/sometext$

Подробности -

?: создаст группу без захвата, которая поможет улучшить производительность

enter image description here

PS - Здесь, прежде чем отправлять какие-либо вопросы, я думаю, что вы должны прочитать кодекс поведения и сделать домашнюю работу или показать какой-либо действительный пример об указанном входе и желаемом выходе вместе с крайними случаями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...