0

c#正規表現を使用して特定の文字列に一致させようとしていますが、その方法がわかりません。どんな助けでも大歓迎です。

一致させようとしている文字列は次のとおりです。ここで、Aは大文字の英数字、Xは大文字の英数字、#は0、1、または2です。

AA-#-XX-X-XXX-XXXXXXX-XXXXXXXX

したがって、次のいずれかが上記の文字列と一致します。

XY-1

MM-0-AB

MM-0-AB-1-ABC-1234567

VV-2-XX-7-CCC-ABCDEFG-12345678

次のいずれも一致しません。

QQ-7-AA(2番目のレベルでは0、1、2のみが許可されます。)

QQ-2-XX-7-CC(そのレベルの部分的な文字。)

QQ-2-XX-7-CCC-ABCDEFG-(一気に終わらせることはできません。)

QQ-2-XX-7-CCC-ABCDEFG-123456(そのレベルの部分的な文字。)

これまでのところ(それほど遠くはありませんが)一致するパターンが@"^[A-Z]{2}"ありますが、文字列の残りの部分を条件付きで一致させる方法がわかりません(条件付きで使用するのが適切かどうかさえわかりません)。ある。このために7つの異なるステートメントを書く必要がありますか?不合理に思えますが、私は間違っている可能性があります。

4

1 に答える 1

9

正規表現言語を見てください。次の要素が必要です。

  • 大文字の英字:[A-Z]
  • 大文字の英数字:[A-Z0-9]
  • 0、1 または 2:[0-2]
  • ダッシュ:-

  • xを正確にn回一致させる:x{n}

  • xを 0 回または 1 回一致させる:x?
  • 部分式を定義します: (...)

例:

  • 2 つの大文字の英字:[A-Z]{2}
  • 2 つの大文字の英字の後にダッシュが続きます。[A-Z]{2}-
  • 2 つの大文字の英字の後にダッシュが続き、その後に 0、1、または 2 が続きます。[A-Z]{2}-[0-2]
  • 2 つの大文字の英字の後にダッシュが続き、その後に 0、1 または 2 が続きますが、ダッシュと 0、1 または 2 で構成される部分式は 0 回または 1 回発生します。
    [A-Z]{2}(-[0-2])?
  • 等々...

結果の式:

^[A-Z]{2}(-[0-2](-[A-Z0-9]{2}(-[A-Z0-9](-[A-Z0-9]{3}(-[A-Z0-9]{7}(-[A-Z0-9]{8})?)?)?)?)?)?$
于 2012-05-21T21:47:51.633 に答える