如何使用正则表达式为mysql匹配偶数字母或奇数字母

时间:2011-04-07 13:30:58

标签: mysql regex

有没有人知道如何在mysql中使用regexp匹配偶数和奇数的字母?我需要匹配偶数个A,然后是奇数个G,然后至少一个TC?例如:acgtccAAAAGGGTCatg会匹配。它是dna测序的东西

2 个答案:

答案 0 :(得分:23)

偶数个A可以表示为(AA)+AA的一个或多个实例;因此它将匹配AA,AAAA,AAAAAA ......)。奇数个G可以表示为G(GG)*(一个G,后跟零个或多个GG个实例,这样就可以匹配G,GGG,GGGGG ......)。 / p>

把它放在一起你就得到了:

/(AA)+G(GG)*TC/

但是,由于正则表达式引擎会尝试尽可能匹配,因此该表达式实际上会匹配AAAGGGTC的子字符串(即AAGGGTC)!为了防止这种情况发生,您可以使用negative lookbehind确保第一个A之前的字符不是另一个A

/(?<!A)(AA)+G(GG)*TC/

...除了MySQL不支持其正则表达式中的外观。

您可以做的是指定模式从字符串的开头开始(anchored^),或者前面是不是A的字符:

/(^|[^A])(AA)+G(GG)*TC/

但请注意,如果在字符串的开头没有找到模式,则使用此模式将捕获额外的字符,因此如果第一个字符不是A,则必须将其剪切掉。

答案 1 :(得分:1)

您可以尝试类似(AA)*(GG)* GTC

的内容

我认为这样可以解决问题。不知道是否有一个特殊的mysql语法