Четен брой A може да бъде изразен като (AA)+
(един или повече екземпляри на AA
; така че ще съвпада с АА, АААА, АААААА...). Нечетен брой Gs може да бъде изразен като G(GG)*
(един G
последвано от нула или повече екземпляри на GG
, така че ще съвпада с G, GGG, GGGGG...).
Съберете това и ще получите:
/(AA)+G(GG)*TC/
Въпреки това, тъй като механизмите за регулярни изрази ще се опитат да съвпадат колкото е възможно повече, този израз всъщност ще съответства на подниз от AAAGGGTC
(т.е. AAGGGTC
)! За да предотвратите това, можете да използвате отрицателен поглед назад
за да се гарантира, че знакът преди първия A
не е друг A
:
/(?<!A)(AA)+G(GG)*TC/
... с изключение на това, че MySQL не поддържа огледи в техните регулярни изрази.
Това, което можете да направите вместо това, е да посочите, че шаблонът започва или от началото на низа (закотвен от ^
), или е предшестван от знак, който не е A:
/(^|[^A])(AA)+G(GG)*TC/
Но имайте предвид, че с този шаблон ще бъде заловен допълнителен знак, ако шаблонът не е намерен в началото на низа, така че ще трябва да отрежете първия знак, ако не е A.