我是正则表达式的新手,经过搜索和试验后,我找不到解决方案。我想用单词搜索数据库。搜索模式可能包含应该出现在返回词中的字母。示例模式:pale
应返回包含“p”和/或“a”和/或“l”和/或“e”的单词:
可能的词(如果在数据库中):pal
, lea
, epa
, pale
,elap
等等 ...
我的问题是如何构建一个可以执行上述操作的正则表达式。
问候。
我是正则表达式的新手,经过搜索和试验后,我找不到解决方案。我想用单词搜索数据库。搜索模式可能包含应该出现在返回词中的字母。示例模式:pale
应返回包含“p”和/或“a”和/或“l”和/或“e”的单词:
可能的词(如果在数据库中):pal
, lea
, epa
, pale
,elap
等等 ...
我的问题是如何构建一个可以执行上述操作的正则表达式。
问候。
SELECT *
FROM MyTable
WHERE word RLIKE '^[pale]+$'
遵守字母计数的正则表达式如下所示:
^(p?(a?(l?e?|e?l?)|l?(a?|e?)|e?(a?lf?|l?a?))|a?(p?(l?e?|e?l?)|l?(p?e?|e?p?)|e?(p?l?|l?p?))|l?(a?(p?e?|e?p?)|p?(a?e?|e?a?)|e?(a?p?|p?a?))|e?(p?(a?l?|l?a?)|a?(p?l?|l?p?)|l?(a?p?|p?a?)))$
如您所见,正则表达式的大小基于输入的长度呈指数增长。