-3

以下の例のような文字列を解析する必要があります。

Regex TitleRegex = new Regex(@"[A-Z].* - ([0-9].*) [A-Z]");
var match = TitleRegex.Match("Chapter - 1 The Brown Fox");
Console.WriteLine(match.Groups[1].Value);

私が欲しいのは、数値を抽出することです。問題は、出力が1 The Brown単に1. 数字 ( ) のパターン
に文字も含まれている理由がわかりません。[0-9]

助言がありますか?

4

4 に答える 4

3
Regex TitleRegex = new Regex(@"[A-Z].* - ([0-9]{1,2}) [A-Z]");

.あなたは、通常、 new lines 以外のすべてに一致するをキャプチャしています。量指定子をそこに置き{1,2}ます。つまり、0 ~ 99 に一致します。要件に合わせて変更します (または、 0 または more のままにしておくこともできます*)。

\dの代わりにも使えますか[0-9]?略記は一般的に良いことです:)

于 2010-11-11T13:02:53.527 に答える
2

.*キャプチャ グループに追加したときに要求したため、文字が含まれています。ジャスト([0-9]+)・オア・ベターを試す(\d+)

于 2010-11-11T13:05:08.113 に答える
1

答えは、量指定子を誤用しているように見えるということです。

[0-9].*

その部分パターンは、任意の 1 桁 (0-9) に 1 回一致し、次に任意の文字 (.) に 0 回以上 (*)一致します。

アスタリスクの前のドットを削除します。

[0-9]*
于 2010-11-11T13:04:22.973 に答える
0

への変更:

"[A-Z].* - ([0-9]?) [A-Z]"

これを使用する[0-9].*と、1 つの数字と 0 または多数の記号を検索すると[0-9]+、その特定の場所で 1 つまたは複数の整数が得られます。3 つ以上の整数が存在しないことが確実な場合は[0-9]{1,3}、4、5 などを必要なだけ使用できます。

于 2010-11-11T13:05:29.250 に答える