Как исключить конкретный URI в регулярном выражении - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть регулярное выражение, как этот PRCE, с использованием php:

^/someurl/* Есть много URL, таких как

/someurl/test
/someurl/something/{version}/{name}/{etc}

, и мне нужно исключить URL, как этот: ^/someurl/test/{version}/commands/*

{version} is a float number like 2.1.1 2.4

Я пробовал это ^((?!/someurl/test/[0-9].+/commands/*))

Это работает, но мне нужно добавить это в одну строку, как ^/someurl/* Исключая ^((?!/someurl/test/[0-9].+/commands/*))

Как к ним присоединиться?Благодаря.

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете использовать

^/someurl/(?!test/[0-9.]+/commands/).*

Или немного точнее

^/someurl/(?!test/[0-9]+(?:\.[0-9]+)+/commands/).*

См. Демонстрацию regex

Подробности

  • ^/someurl/ - /someurl/ в начале строки
  • (?!test/[0-9.]+/commands/) - непосредственно справа от текущей позиции, не может быть test/, затем 1+ цифр или точек, затем /commands/ подстрока (если используется [0-9]+(?:\.[0-9]+)+, она будет соответствовать 1 или более цифрам, а затем 1 или более повторениям точки с 1+ цифрами)
  • .* - любые 0+ символов как можно больше.
...