Sudý počet A lze vyjádřit jako (AA)+
(jedna nebo více instancí AA
; takže bude odpovídat AA, AAAA, AAAAAA...). Lichý počet G lze vyjádřit jako G(GG)*
(jeden G
následuje nula nebo více výskytů GG
, takže to bude odpovídat G, GGG, GGGGG...).
Dejte to dohromady a máte:
/(AA)+G(GG)*TC/
Protože se však motory regulárních výrazů budou snažit co nejvíce shodovat, bude tento výraz ve skutečnosti odpovídat podřetězci AAAGGGTC
(tj. AAGGGTC
)! Abyste tomu zabránili, můžete použít negativní vzhled
abyste zajistili, že znak před prvním A
není další A
:
/(?<!A)(AA)+G(GG)*TC/
...kromě toho, že MySQL nepodporuje vyhledávání v jejich regulárních výrazech.
Místo toho můžete určit, že vzor začíná na začátku řetězce (ukotven od ^
), nebo mu předchází znak, který není A:
/(^|[^A])(AA)+G(GG)*TC/
Všimněte si však, že s tímto vzorem bude zachycen další znak, pokud vzor nebude nalezen na začátku řetězce, takže pokud to není A, budete muset první znak sejmout.