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

.scu

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

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

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

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

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

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

tz-lom

Продвинутый новичок
а почему именно 1я регулярка?
лично я вижу что 1я не подойдёт а 2я подойдёт (на конце строки / )
 

.scu

Новичок
это я опечаталась, при разборе слеша на конце нет, т.е. строка:
project1/dd

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

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

.scu

Новичок
давайте не будем развивать полемику об актуальности, все-таки вопрос был не в этом.

хотелось бы услышать ответы тех, у кого есть какие-либо идеи по решению задачи
 

Вурдалак

Продвинутый новичок
А разве видны какие-то предпосылки для полемики? Вы стесняетесь назвать исходную задачу, да? Тогда извините.
 

tz-lom

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

.scu

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

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

MiksIr

miksir@home:~$
давайте не будем развивать полемику об актуальности, все-таки вопрос был не в этом.

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

whirlwind

TDD infected, paranoid
Предлагаю все подходящие регулярки сортировать по степени педантичности.
 

zerkms

TDD infected
Команда форума
whirlwind
Или вообще - сначала отсортировать, а потом матчить

А если регулярки не приходят извне - то веса можно вообще сразу посчитать ручками и сохранить
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
может просто длину регулярок сравнивать? Самая длинная - самая конкретная
 

tz-lom

Продвинутый новичок
спорное утверждение,в конце концов регулярка эквивалентная точке будет ОЧЕНЬ длинная
 
Сверху