偶数のAは、(AA)+として表すことができます。 (AAの1つ以上のインスタンス;したがって、AA、AAAA、AAAAAAと一致します...)。奇数のGは、G(GG)*として表すことができます。 (1つのG その後にGGの0個以上のインスタンスが続きます 、G、GGG、GGGGGと一致するように...)
それをまとめると、次のようになります。
/(AA)+G(GG)*TC/
ただし、正規表現エンジンは可能な限り一致しようとするため、この式は実際にはAAAGGGTCのサブストリングと一致します。 (つまり、AAGGGTC )!これを防ぐには、ネガティブルックビハインド
を使用できます。 最初のAの前の文字を確認する 別のAではありません :
/(?<!A)(AA)+G(GG)*TC/
...MySQLが正規表現でのルックアラウンドをサポートしていないことを除いて。
代わりにできることは、パターンが文字列の先頭から始まるように指定することです(アンカー ^による )、またはAではない文字が前に付いている:
/(^|[^A])(AA)+G(GG)*TC/
ただし、このパターンでは、文字列の先頭にパターンが見つからない場合は余分な文字がキャプチャされるため、Aでない場合は、最初の文字を切り刻む必要があることに注意してください。