Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como você combina números pares de letras ou números ímpares de letras usando regexp para mysql


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.