Есть конечный набор идентификаторов: id1, id2, id3 ... id100
Как регуляркой поймать строки где какие-то из этих идентификаторы перечислены через разделитель в произвольном порядке. Например: id1_id2 или id2_id1 или id25_id1_id14_id8 итд
Это вообще возможно?
Опережая вопрос "Зачем?" отвечу: Для написания правила роутинга.
дай входящие примеры роутов и что есть. но полагаю что задача просто регуляркой не решится. регулярка не хранит стек и не имеет строгой очередности совпадений.
Ладно, забейте я уже почти сделал, типа такого надо:
(id0|id1|id2|id3)(_(id0|id1|id2|id3))+
Пока только проблема в том, что можно много раз один и тот же идентификатор включить в строку, чего в идеале не должно было бы быть. Но для начала, сойдет.
Разве что через GET ?types=videos,photos
Но по ряду причин не охота так делать
@AlexB, вот этот вариант мне больше симпатизирует. Ибо он более естественный, раз это фильтрация выдачи. Url path это все-таки расопложение документа, вы его както извратили короче)
в общем, суть в том, что первые сегменты указывают на метод, остальные сегменты означают какие-то данные. это значит, что обработка происходит в таком порядке:
урл сперва матчится по роутам,
бьётся на параметры
эти параметры передаются в метод
уже в этом методе обрабатываются, если нужно - проходят дополнительную проверку.
ты же пытаешься обработать их в другом порядке:
матчить урл по роутам И одновременно выполнить проверку
разбить по параметрам
передать в метод
а поскольку роуты в жанге построены на регулярках, то и решение п.1. ты ищешь целиком на регулярке
Фигня в том, что вот так
(?P<types>[^/])
я ловить не могу т.к. если тип один /photos/ нужен вызов одного метода, а если тип множественный /photos_videos/ нужно вызывать другой, который присобачит небольшую оберточку