在MySQL数据库表中存储正则表达式并与它们进行匹配

时间:2010-03-01 09:31:16

标签: php mysql regex

我有一个非常有趣的任务,我不知道如何实现。

我需要在数据库表中存储许多正则表达式,并且需要能够找到它们与给定字符串匹配的内容。

例如:

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 个答案:

答案 0 :(得分:12)

select * from table where $your_string RLIKE regexp 

mysql regular expressions

答案 1 :(得分:2)

SELECT * FROM table WHERE 'some stuff' REGEXP `regexp`;

不幸的是,没有办法使用带有regexp的查询的索引。