Имеется вот такой паттерн:
category\/(.+?)\/(:?size\/(.+?)\/)(?:page\/(.+?)\/?)?
В нем 3 группы записи: category/(...)/, size/(...)/ и необязательный page/(...)/. При попытке сделать необязательной группу с size подставлением ? после скобок — всё ломается. Т.е. вот такой паттерн уже не работает:
category\/(.+?)\/(?:size\/(.+?)\/)?(?:page\/(.+?)\/?)?
В итоге хотелось бы что бы значение category записывалось всегда, а size и page только при их наличии. Что я делаю не так?
Проблема с жадностью. Подскажите парсеру, что нужно смотреть до конца строки и все будет работать
category\/(.+?)\/(?:size\/(.+?)\/)?(?:page\/(.+?)\/?)?$
https://regex101.com/r/wiIaNa/2
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости