偶数の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でない場合は、最初の文字を切り刻む必要があることに注意してください。