Синтаксис регулярного выражения для соответствия только первому сегменту - PullRequest
1 голос
/ 17 марта 2020

У меня есть количество URL-адресов, где мне нужно сопоставить первый сегмент без "/" с Regex

Этот сегмент может быть или xx или xx-xx.

Я пытался сделать это с lookahead и lookbehind, но иногда в URL у меня есть еще один двухбуквенный сегмент. (/ ts /; / ca /) я не хочу / ts; / CA / их, чтобы соответствовать. Я хочу только первый сегмент в моем Regex. Какие-либо предложения? Спасибо.

https://regex101.com/r/Qy3nyI/1

(?<=\/)\w{2}(-\w{2})?(?=\/)

Тестовые URL:

/en/home.aspx
/en-gb/ts/tc/home.aspx
/en-gb/home.aspx
/en-de/home.aspx
/de-de/home.aspx
/en/home.aspx
/en-fb/afspfas.aspx
/en-gb/ts/ca/anotherPage.aspx

1 Ответ

0 голосов
/ 17 марта 2020

Попробуйте добавить начальный якорь ^ к начальному взгляду в вашем текущем шаблоне регулярных выражений:

(?<=^/)\w{2}(-\w{2})?(?=/)
    ^^ change is here

Обновленная демо:

Демо

Этот шаблон говорит:

(?<=^/)         lookbehind and assert that what precedes is a leading /
\w{2}(-\w{2})?  then match the country abbreviation text
(?=/)           lookahead and assert that what follows is another /
...