0

検証する必要がある文字列があります。

最初の 2 文字は AG または Z で構成する必要がありますが、GB または ZZ の組み合わせにすることはできません。

正規表現で表現するにはどうすればよいですか?

4

3 に答える 3

8

これには、負の後読みが最適です。

[A-GZ]{2}(?<!GB)(?<!ZZ)

説明:

[A-GZ]{2}どちらも AG または Z でなければならない正確に 2 文字に
(?<!GB)一致します。一致した前の 2 文字が GB でない場合にのみ一致します。
(?<!ZZ)一致した前の 2 文字が ZZ でない場合にのみ一致します。

すべての先読みおよび後読み操作と同様に、負の後読みは幅がゼロです。つまり、カーソル位置は変更されません。これが、私が行ったように 2 列に並べることができる理由です。これは、許可されていない 2 つのケースが明確になるため、| よりも気に入っています。そして、それを 2 回実行すると、| とほぼ同じランタイム効果が得られるはずです。単一の後読みで演算子。

于 2010-06-22T19:39:04.477 に答える
3
^([A-F][A-GZ]|G[AC-GZ]|Z[A-G]).*
于 2010-06-22T19:35:31.457 に答える
0

^([AF][A-GZ]|G[AC-GZ]|Z[AG])

于 2010-06-22T19:41:07.180 に答える