Причина, по которой ваш шаблон не соответствует us
, заключается в том, что чередование ([a-zA-Z]{2}|[a-zA-Z]{2}-[a-zA-Z]{2}\/)
соответствует только \/
во второй части чередования.
Также оно не соответствует последней группе со сделкамии подсказки, потому что в данных примера нет завершающего \/
.
Ваш обновленный паттерн может выглядеть как
([a-zA-Z]{2}|[a-zA-Z]{2}-[a-zA-Z]{2})\/c\/(deals-and-tips)?
Regex demo
Вы можете немного сократить шаблон, используя необязательную группу без захвата (?:-[a-zA-Z]{2})?
внутри первой группы захвата, чтобы при желании сопоставить деталь, начинающуюся с дефиса.
Как и в примере данных, вы можете сопоставить ведущую\/
перед группой захвата, чтобы получить более эффективное совпадение.
\/([a-zA-Z]{2}(?:-[a-zA-Z]{2})?)\/c\/(deals-and-tips)?
По частям
\/
Чтобы быть более точным, сопоставьте ведущую /
(
Захват группа 1 [a-zA-Z]{2}
Совпадение 2 символа az (?:-[a-zA-Z]{2})?
По выбору совпадение -
и 2 знакаaz
)
Закрыть группу \/c\/
Матч /c/
предложения и советы` (deals-and-tips)?
Опциональный захват группа 2 совпадение deals-and-tips
Regex demo
Обратите внимание, что если вы используете другой разделитель, чем /
, вам не нужно избегать косой черты.