Een even aantal A's kan worden uitgedrukt als (AA)+ (een of meer exemplaren van AA; dus het komt overeen met AA, AAAA, AAAAAA...). Een oneven aantal G's kan worden uitgedrukt als G(GG)* (één G gevolgd door nul of meer exemplaren van GG , dus dat komt overeen met G, GGG, GGGGG...).
Voeg dat samen en je hebt:
/(AA)+G(GG)*TC/
Aangezien regex-engines echter zoveel mogelijk proberen overeen te komen, komt deze uitdrukking in feite overeen met een subtekenreeks van AAAGGGTC (bijv. AAGGGTC )! Om dat te voorkomen, kunt u een negatieve lookbehind
gebruiken om ervoor te zorgen dat het teken voor de eerste A is niet een andere A :
/(?<!A)(AA)+G(GG)*TC/
...behalve dat MySQL zoekronden in hun regexes niet ondersteunt.
Wat u in plaats daarvan kunt doen, is specificeren dat het patroon ofwel aan het begin van de tekenreeks begint (verankerd door ^ ), of wordt voorafgegaan door een teken dat geen A is:
/(^|[^A])(AA)+G(GG)*TC/
Houd er echter rekening mee dat met dit patroon een extra teken wordt vastgelegd als het patroon niet aan het begin van de tekenreeks wordt gevonden, dus u moet het eerste teken weghakken als het geen A is.