Хранение регулярных выражений в таблице базы данных MySQL и обработка их - PullRequest
5 голосов
/ 01 марта 2010

У меня очень интересная задача, которую я не знаю, как ее выполнить.

Мне нужно хранить много регулярных выражений в таблице базы данных, и мне нужно найти, какое из них соответствует заданной строке.

Например:

id | regexp
---|-------------
1  | ^hello world$
2  | ^I have [0-9] flowers&
3  | ^some other regexp$ 
4  | ^and another (one|regexp)$

И мне нужно найти, какое из этих выражений соответствует строке «У меня 5 цветов». Конечно, я могу SELECT * FROM table и циклически перебирать выражения, соответствующие им одно за другим в PHP, но для сервера это будет ужасно.

Можно ли как-нибудь проиндексировать эту таблицу или использовать специальный SQL-запрос для выполнения этой задачи?

Буду признателен за любой ответ. Спасибо.

Ответы [ 2 ]

12 голосов
/ 01 марта 2010
select * from table where $your_string RLIKE regexp 

регулярные выражения mysql

2 голосов
/ 04 марта 2010
SELECT * FROM table WHERE 'some stuff' REGEXP `regexp`;

К сожалению, невозможно использовать индексы с запросами, использующими регулярные выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...