1

私はこの正規表現を持っています:CMD?(S?[1-8][0-1]|R?[1-8]|[qQ])

次のケースに一致する必要があります。

すべてのケースは「CMD」で始まる必要があります

次のいずれかが続きます。

  1. 「S」に続く
    1. [1-8] 続いて
    2. [0-1]
  2. 「R」に続く
    1. [1-8]
  3. 「q」または「Q」

しかし、それも一致することがわかりましCMD[1-8][1-0]た。何が間違っているのかわかりません。

そして最後に、これらのケースを除くすべての正規表現を取得するにはどうすればよいですか。ステートメントを否定する解決策が見つからないためです。

4

1 に答える 1

2

の意味を混乱させているようですが?、これは実際には「前の文字の 0 または 1」を意味します。そのため、. なしで一致が得られますS

探している正規表現は次のとおりです。

CMD(S[1-8][01]|R[1-8]|[qQ])

編集:

すみません、質問の後半が抜けていました。

使用している実装によって異なります。たとえば、Perl では、 の!~代わりに書くのと同じくらい簡単です=~。それ以外の場合は、「否定先読みアサーション」と呼ばれるものを使用できます。CMD否定されたシリーズを:で開始する必要があると仮定します。

CMD(?!S[1-8][01]|R[1-8]|[qQ])
于 2012-10-01T12:52:14.463 に答える