1

1 つの文字列形式と正確に一致する正規表現を作成しようとしています。弦はこうなります

A3476,テキストA
B5628,テキストB
A9871,テキストC

最初の文字は 'A' または 'B' である必要があり、その後に 4 文字の長さの整数が続き、その後に ',' が続きます。カンマのみの後 3 つの単語が繰り返されます。これらは、'TextA' または 'TextB' または 'TextB' のいずれかです。

私はこの正規表現を試しました

(A|B)(\d{4})(,)(テキストA|テキストB|テキストC)

整数にアルファベットを追加するか、長さが4文字を超える整数を追加すると、文字列の一致は失敗するはずですが、失敗していません。

文字列がこのようなものであるとします

A653k7876,TextA

私はこのような結果を得てい7876,TextAます。結果は文字「A」が欠落しており、最後から整数を読み取っています。私の意図は、それが失敗することです。

4

3 に答える 3

1

正規表現は問題ありませんが、一致の開始位置と終了位置を示す必要があります。^特殊文字は、行または文字列の開始と終了を示します$。したがって、代わりにこれを試してください:

^(A|B)(\d{4})(,)(TextA|TextB|TextC)$

これを機能させるには、オブジェクトをRegexOptions.Multiline作成するときに必ず指定してください。Regex

于 2013-03-21T10:18:21.450 に答える
0

あなたが提供したとおりに文字列を使用しているかのように、さらに情報が必要なようです。

Console.WriteLine(Regex.IsMatch(@"A653k7876,TextA", @"(A|B)(\d{4})(,)(TextA|TextB|TextC)"));

出力 False - 必要に応じて。

于 2013-03-21T11:08:02.390 に答える
0

Use:

\b(A|B)(\d{4}),(TextA|TextB|TextC)\b

\b denotes the word boundary

You might find this link useful: C# Regex Cheat Sheet

于 2013-03-21T10:16:10.970 に答える