Кто-нибудь сталкивался с решением вот такой интересной задачки ?
Есть набор регулярных выражений, пара десятков. Они используются для разбора URL и выбора соответствующего шаблону View. Если я задаю их вручную, то как правило, слежу за тем, чтобы одному и тому же URL не могли соответствовать два и более регвыра. Но сейчас назрела необходимость генерации массива регвыров программно. При этом вполне может получиться, что два и более регвыров будут удовлетворять одному и тому же URL.
Как можно обработать RegExp'ы, чтобы выявить такую ситуацию заранее, не дожидаясь пока она произойдёт на сотом, тысячном запросе ?
Примечание:
>>> Нельзя ли обойтись url'ами вида param1=(...)¶m2=(...)&..., отстутствие пересечений в которых проверяется значительно проще.
Нет, в моём случае URL'ы не зажаты в набор переменных и могут быть любого вида (этим обеспечивается полная гибкость).
.htaccess любой несуществующий URL редиректит на index.php, а скрипт уже сам подбирает под этот URL соответствующий класс-вьюшку.
Примечание:
Указанный Вами скрипт на питоне похоже обладает рядом ограничений. Думаю, что имеет смысл подумать над упрощённым алгоритмом проверки...
Примечание:
2 KhenarGhot
у меня просто есть несколько различных "поставщиков" регулярных выражений. Мне нужен алгоритм, который бы просигнализировал о том, что регвыр одного из поставщиков не может быть добавлен, так как он пересекается с одним из уже присутствующих в системе. Знать о том, какие регвыры у меня в системе уже присутствуют, поставщики не могут.
Примечание:
Проблему решил пока частным способом: при проверке URL прогоняю список RE до конца (а не до первого встреченного, как раньше). Задержку это даёт ненамного большую, но зато позволяет выявить URL, на которые откликаются два или более RE. Если такие встречаются, я сохраняю их в логе и шлю себе уведомление на E-mail (точно так же, как шлю уведомление о встрече несуществующего URL).
Всем спасибо.
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.