Хранение регулярных выражений в таблице базы данных MySQL и соответствие против них

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

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

Например:

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

И я должен найти, какое из тех выражений соответствует строке, "У меня есть 5 цветов". Конечно, я могу ВЫБРАТЬ * таблица FROM и цикл через выражения, соответствующие им один за другим в PHP, но это было бы ужасно, чтобы сервер обработал.

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

Я буду ценить любой ответ.Спасибо.

6
задан Alan Moore 2 March 2010 в 12:15
поделиться

2 ответа

select * from table where $your_string RLIKE regexp 

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

13
ответ дан 8 December 2019 в 14:42
поделиться
SELECT * FROM table WHERE 'some stuff' REGEXP `regexp`;

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

3
ответ дан 8 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: