Страницы

Поиск по вопросам

вторник, 12 марта 2019 г.

Как повторять целый фрагмент в регулярных выражениях?

Здравствуйте! Есть следуюеще регулярное выражение:
^category/(?P[\w-]+(/[\w-]+)*)_(?P[\w-]+)/(?P[\w]+)(-(?P[\w-]+))/$
Работает оно отлично. Результат получается таким:
/category/categoryone/categorytwo_123/filtercode-filternameone-filternametwo/
И стоит задача сделать так, чтобы была возможность мультиплицировать последний ( после /) участок выражения:
/(?P[\w]+)(-(?P[\w-]+))
чтобы URL получился таким:
/category/categoryone/categorytwo_123/filtercodeone-filternameone-filternametwo/filtercodetwo-filternamethree-filternamefour/


Ответ

/category/categoryone/categorytwo_123/filtercode-filternameone-filternametwo/
я поправил немного ваше выражение
^/(?P[\w-]+(/[\w-]+)*)_(?P[\w-]+)/(?P[\w]+)(-(?P[\w-]+))/$
Так у меня находит.
По вопросу.
^/(?P[\w-]+(/[\w-]+)*)_(?P[\w-]+)/((?P[\w]+)(-(?P[\w/-]+)))*/$
находит
/category/categoryone/categorytwo_123/filtercode-filternameone-filternametwo/filtercode-filternameone-filternametwo/
Измененная часть
((?P[\w]+)(-(?P[\w/-]+)))*
Результат

upd

Комментариев нет:

Отправить комментарий