Parzystą liczbę A można wyrazić jako (AA)+ (jedna lub więcej instancji AA; więc będzie pasować do AA, AAAA, AAAAAA...). Nieparzystą liczbę G można wyrazić jako G(GG)* (jeden G po którym następuje zero lub więcej wystąpień GG , więc będzie to pasować do G, GGG, GGGGG...).
Połącz to i masz:
/(AA)+G(GG)*TC/
Ponieważ jednak silniki regex będą próbowały dopasować jak najwięcej, to wyrażenie będzie pasować do podłańcucha AAAGGGTC (np. AAGGGTC )! Aby temu zapobiec, możesz użyć negatywnego spojrzenia w tył
aby upewnić się, że znak przed pierwszym A nie jest kolejnym A :
/(?<!A)(AA)+G(GG)*TC/
...z wyjątkiem tego, że MySQL nie obsługuje obejść w swoich wyrażeniach regularnych.
Zamiast tego możesz określić, że wzorzec albo zaczyna się na początku ciągu (zakotwiczony przez ^ ) lub jest poprzedzony znakiem, który nie jest A:
/(^|[^A])(AA)+G(GG)*TC/
Pamiętaj jednak, że w przypadku tego wzorca zostanie przechwycony dodatkowy znak, jeśli wzorzec nie zostanie znaleziony na początku ciągu, więc będziesz musiał obciąć pierwszy znak, jeśli nie jest to A.