将regexp模式压缩为较短的正则表达式以进行mysql查询

时间:2016-04-06 18:31:00

标签: mysql regex

我想使用以下正则表达式来查找具有a和b或a和c的任何单词以及这些字母中的任何一个(f或g)我使用此正则表达式并且工作得非常好但是: 还有另一种比我用过的模式更短的方法吗?

我用的正则表达式:

(f|g).*a.*(b|c)|a.*(f|g).*(b|c)|a.*(b|c).*(f|g)

我的测试文字:

-----------------------------------------------
          txt               |   matches 
-----------------------------------------------
test with g a b             |   YES
test with m n s             |   NO
test with a g b             |   YES
test with a b g             |   YES
test with e r q             |   NO
test with fg a fg b fg      |   YES
-----------------------------------------------

我想检查一个单词应该有a和b和f或g。但是f或g有任何单词和其中一个例如我这样检查:abg - abf - gab - fab - agb - afb - gab - fab并且不匹配这个:gcd - 它没有a和b。

1 个答案:

答案 0 :(得分:0)

如果此类查询是主要查询,那么在对字母进行排序后,我会建议a.*[bc].*[fg]

可能您希望将字母排序为新列,以免破坏原始字符串。