Я ищу эффективный алгоритм, способный найти все шаблоны, соответствующие определенной строке. Набор шаблонов может быть очень большим (более 100 000) и динамическим (шаблоны добавляются или удаляются в любое время). Шаблоны не обязательно являются стандартным регулярным выражением, они могут быть подмножеством регулярных выражений или чем-то похожим на шаблон оболочки (например: file-*.txt
). Предпочтительнее решение для подмножества регулярных выражений (как объяснено ниже).
К вашему сведению: меня не интересуют методы грубой силы, основанные на списке RegExp.
Под простым регулярным выражением я подразумеваю регулярное выражение, которое поддерживает ?
, *
, +
, классы символов [a-z]
и, возможно, логический оператор |
.
Чтобы уточнить мою потребность: я хочу найти все шаблоны, соответствующие URL-адресу:
http://site1.com/12345/topic/news/index.html
Ответом должны быть эти шаблоны, основанные на шаблоне, установленном ниже.
http://*.site1.com/*/topic/*
http://*.site1.com/*
http://*
Набор узоров:
http://*.site1.com/*/topic/*
http://*.site1.com/*/article/*
http://*.site1.com/*
http://*.site2.com/topic/*
http://*.site2.com/article/*
http://*.site2.com/*
http://*