検証する必要がある文字列があります。
最初の 2 文字は AG または Z で構成する必要がありますが、GB または ZZ の組み合わせにすることはできません。
正規表現で表現するにはどうすればよいですか?
検証する必要がある文字列があります。
最初の 2 文字は AG または Z で構成する必要がありますが、GB または ZZ の組み合わせにすることはできません。
正規表現で表現するにはどうすればよいですか?
これには、負の後読みが最適です。
[A-GZ]{2}(?<!GB)(?<!ZZ)
説明:
[A-GZ]{2}
どちらも AG または Z でなければならない正確に 2 文字に
(?<!GB)
一致します。一致した前の 2 文字が GB でない場合にのみ一致します。
(?<!ZZ)
一致した前の 2 文字が ZZ でない場合にのみ一致します。
すべての先読みおよび後読み操作と同様に、負の後読みは幅がゼロです。つまり、カーソル位置は変更されません。これが、私が行ったように 2 列に並べることができる理由です。これは、許可されていない 2 つのケースが明確になるため、| よりも気に入っています。そして、それを 2 回実行すると、| とほぼ同じランタイム効果が得られるはずです。単一の後読みで演算子。
^([A-F][A-GZ]|G[AC-GZ]|Z[A-G]).*
^([AF][A-GZ]|G[AC-GZ]|Z[AG])