如何使用regexp for mysql匹配偶数个字母或奇数个字母

thu*_*0lt 10 regex mysql

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

Dan*_*uis 24

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

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

/(AA)+G(GG)*TC/
Run Code Online (Sandbox Code Playgroud)

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

/(?<!A)(AA)+G(GG)*TC/
Run Code Online (Sandbox Code Playgroud)

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

你可以做的,而不是为指定的模式无论是在字符串(开头开始固定^),或者是通过这不是一个字符开头:

/(^|[^A])(AA)+G(GG)*TC/
Run Code Online (Sandbox Code Playgroud)

但请注意,使用此模式时,如果在字符串的开头找不到模式,则会捕获一个额外的字符,因此如果它不是A,您将不得不砍掉第一个字符.