Jumlah A yang genap dapat dinyatakan sebagai (AA)+
(satu atau beberapa contoh AA
; jadi itu akan cocok dengan AA, AAAA, AAAAAA...). Jumlah G yang ganjil dapat dinyatakan sebagai G(GG)*
(satu G
diikuti oleh nol atau lebih contoh GG
, jadi itu akan cocok dengan G, GGG, GGGGG...).
Gabungkan itu dan Anda mendapatkan:
/(AA)+G(GG)*TC/
Namun, karena mesin regex akan mencoba mencocokkan sebanyak mungkin, ekspresi ini sebenarnya akan cocok dengan substring AAAGGGTC
(mis. AAGGGTC
)! Untuk mencegahnya, Anda dapat menggunakan tampilan negatif di belakang
untuk memastikan bahwa karakter sebelum A
pertama bukan A
. yang lain :
/(?<!A)(AA)+G(GG)*TC/
...kecuali MySQL tidak mendukung lookarounds di regex mereka.
Apa yang dapat Anda lakukan adalah menentukan bahwa pola dimulai dari awal string (berlabuh oleh ^
), atau didahului oleh karakter yang bukan A:
/(^|[^A])(AA)+G(GG)*TC/
Namun perhatikan bahwa dengan pola ini, karakter tambahan akan diambil jika pola tidak ditemukan di awal string, jadi Anda harus memotong karakter pertama jika bukan A.