Сопоставить несколько URL через regex
Всем привет. Есть два path:
/api/test/{path param}
/api/test/{path param}/full
Мне нужно сопоставить URL на который сервер прислал запрос с этими двумя путями.
Регулярки для этого я использовал следующие:
\/test\/.*
\/test\/.*\/full
Но сразу возникла проблема. Второй путь маппится на обе регулярки, т.к. первой регулярке без разницы, что будет после /test/. Соответственно возникает запрос на то, чтобы как-то проверять второй случай, отсекая первую регулярку.
Из идей, это добавить в регулярку заканчивающуюся на ".*" проверку на то, что во всех этих символах не будет содержаться '/'.
\/test\/.* но не '/' в конечной группе
Но я не совсем понимаю, как это можно сделать. Пробовал такую регулярку:
\/test\/[^\/]+
Но она все равно матчит первый кейс по /test/1/full. И только если сделать такой путь /test//full, то матча не будет.
Ответы (1 шт):
Первый урл будет матчить регулярное выражение:
^/api/test/.+(?<!/full)$
Подробности о Negative Lookbehind.
Для второго урла:
^/api/test/.+/full$