Um número par de A's pode ser expresso como
(AA)+
(uma ou mais instâncias de AA
; então vai combinar com AA, AAAA, AAAAAA...). Um número ímpar de Gs pode ser expresso como G(GG)*
(um G
seguido por zero ou mais instâncias de GG
, para que corresponda a G, GGG, GGGGG...). Junte isso e você terá:
/(AA)+G(GG)*TC/
No entanto, como os mecanismos regex tentarão corresponder o máximo possível, essa expressão corresponderá a uma substring de
AAAGGGTC
(ou seja, AAGGGTC
)! Para evitar isso, você pode usar um olhar por trás negativo
para garantir que o caractere antes do primeiro A
não é outro A
:/(?<!A)(AA)+G(GG)*TC/
...exceto que o MySQL não suporta lookarounds em seus regexes.
O que você pode fazer é especificar que o padrão comece no início da string (ancorado por
^
), ou é precedido por um caractere que não seja A:/(^|[^A])(AA)+G(GG)*TC/
Mas note que com este padrão um caractere extra será capturado se o padrão não for encontrado no início da string, então você terá que cortar o primeiro caractere se não for um A.