Задать вопрос
@mozillla

Как в regexp не захватывать строку, если она совпадает с шаблоном?

Есть регулярка
^\/CATALOG\/([a-zA-Z0-9-_]+)\/(?:sort-([a-zA-Z0-9-_]+)\/?)?(?:num([0-9]+)\/?)?(?:page([0-9]+)\/?)?(?:[\?&]{1}[\S]*)?$

Она нормально парсит адреса вида
/CATALOG/code/sort-price/num48/page2/

Но надо этой-же регуляркой парсить адрес вида
/CATALOG/sort-price/num48/page2/

Что в текущем виде не выходит, так как sort-price захватывается первой группой. Отсюда вопрос - как мне не захватывать группой ([a-zA-Z0-9-_]+) строки начинающиеся на sort- num и page ?
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    RT-001 Эксплуатация RT.DataLake
    1 неделя
    Далее
  • Хекслет
    Python-разработчик
    10 месяцев
    Далее
  • Хекслет
    Fullstack-разработчик на Node.js
    16 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
gobananas
@gobananas
finishhim.ru
Чем вам такой не парсится например:
\/CATALOG\/(.*?)page[0-9]{0,}\/$

Либо если вам построже надо тогда можно так:
\/CATALOG\/(sort-price\/|code\/sort-price\/)num[0-9]{1,}\/page[0-9]{1,}\/

Проверить https://regex101.com/r/tqgYPi/1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы