在MySQL数据库表中存储正则表达式并与之匹配

10

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

我需要将许多正则表达式存储在数据库表中,并且需要能够找到其中哪个与给定字符串匹配。

例如:

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

我需要找出哪个表达式与字符串"I have 5 flowers"匹配。当然,我可以使用SELECT * FROM table并在PHP中逐个匹配表达式,但这对服务器来说是非常糟糕的。

我是否可以通过索引此表格或使用特殊的SQL查询来处理此任务?

我将感激任何答案。谢谢。

2个回答

16

1
谢谢,我之前用过RLIKE,但没想到要交换参数 :) - Silver Light
3
我应该使用什么样的索引,以最好地适应这种情况?只是对正则表达式列建立索引吗? - Silver Light

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

很遗憾,使用正则表达式的查询无法使用索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接