Поиск наиболее схожего со строкой регулярного выражения

  • Автор темы Автор темы .scu
  • Дата начала Дата начала

.scu

Новичок
Есть ли какие-то алгоритмы, которые позволяют определить, какое из регулярных выражений наиболее соответствует строке.

Например есть строка:
project1/dd

Есть несколько регулярок для поиска:
1. ^project([0-9]+)\/([-A-Za-z0-9]+)$
2. ^project([0-9]+)\/(.+)$

задача найти наиболее подходящее, т.е. то которое больше соответствует строке и в котором область поиска уже, в нашем случае это (1).

Есть встроенные ф-ции поиска схожести строк
similar_text
levenshtein

но в случае с регулярками они не всегда отдают корректные ответы, т.к. все же предназначены для простых строк. Кто-нибудь знает какие-то другие алгоритмы для решения данной задачи?
 
а почему именно 1я регулярка?
лично я вижу что 1я не подойдёт а 2я подойдёт (на конце строки / )
 
это я опечаталась, при разборе слеша на конце нет, т.е. строка:
project1/dd

нужно для поиска наиболее точного выражения по отношению к строке (URL)

т.е. задача найти наиболее конкретное регулярное выражение относительно текущей строки (выстроить регулярки их по степени общности)
 
давайте не будем развивать полемику об актуальности, все-таки вопрос был не в этом.

хотелось бы услышать ответы тех, у кого есть какие-либо идеи по решению задачи
 
А разве видны какие-то предпосылки для полемики? Вы стесняетесь назвать исходную задачу, да? Тогда извините.
 
в текущей формулировке решение задачи это написание своего парсера регулярок, который бы анализировал диапазон значений
задача это большая и сложная, поэтому и предлагают поделиться зачем такое требуется, возможно существует неочевидный, но простой способ достичь желаемого
 
К сожалению, отказаться от задачи (т.е. изменить исходные данные и необходимость получить соответствующий результат) не представляется возможным.

Если никто в подобной задачей не сталкивался и не встречался с подобной алгоритмикой, тогда вопрос снимаю, просто думала, что, возможно, существуют уже подобные решения.
 
давайте не будем развивать полемику об актуальности, все-таки вопрос был не в этом.

хотелось бы услышать ответы тех, у кого есть какие-либо идеи по решению задачи
Идеи? Парсите регулярку, назначаете различным метасимволам и классам различные веса, модифицируете эти веса на основе квантификаторов... и т.п.
Только вот давайте все же разовьем полемику от актуальности, ибо вопрос, по ходу, в неверном подходе к какой-то прикладной задаче.
 
Предлагаю все подходящие регулярки сортировать по степени педантичности.
 
whirlwind
Или вообще - сначала отсортировать, а потом матчить

А если регулярки не приходят извне - то веса можно вообще сразу посчитать ручками и сохранить
 
может просто длину регулярок сравнивать? Самая длинная - самая конкретная
 
спорное утверждение,в конце концов регулярка эквивалентная точке будет ОЧЕНЬ длинная
 
Сверху