Вам, безусловно, понадобится больше внимания при разработке регулярных выражений. Например, префикс ^(.*)
будет соответствовать любому вводу - и хотя вам может понадобиться префикс для захвата группы по различным причинам, его наличие будет означать, что вы не сможете легко удалить ни один из URL-адресов в вашей базе данных.
Я в некотором роде согласен с комментарием TokenMacGuy о неразрешимости регулярных выражений, но ситуация может быть не совсем безнадежной в зависимости от истинного масштаба вашей проблемы. Например, чтобы URL соответствовал, его первый символ должен совпадать; так, например, вы можете предварительно отфильтровать свои URL, сказав, какой первый символ на входе будет соответствовать этому URL. Итак, у вас есть вторичная таблица MatchingFirstCharacters
, которая представляет собой поиск между начальными символами и URL-адресами, которые соответствуют этому начальному символу. (Это будет работать, только если у вас нет много неоднозначных префиксов, как я упоминал в первом абзаце моего ответа.) Использование этого подхода будет означать, что вам не обязательно загружать все регулярные выражения для полного соответствия - только те, где хотя бы первый символ совпадает. Я полагаю, что эту идею можно обобщить и дальше, но это упражнение для читателя; -)