2

正規表現を使用して、次の文字列と一致させたい:

January 25
Jan 25

(?:)月と日付の部分を別々にキャプチャしていますが、完全な月名がある場合は月名の最初の 3 文字のみを返したいので、文字「uary」には非キャプチャ グループを使用しています。

(?<M>(Jan(?:uary)?)) (?<D>\d\d)

残念ながら、グループMは常に完全な月名を返します。つまり、非キャプチャ グループもキャプチャします。

私はすでに ExplicitCapture フラグをオンにしています。RegExBuilder と Rad Software の正規表現デザイナーの両方を使用して、ツールが原因ではないことを確認しました。

4

2 に答える 2

4

キャプチャ グループは のみを囲む必要があり Janます。

(?<M>Jan)(?:uary)? (?<D>\d{1,2})

元の式は とほぼ同等(?<M>January|Jan) (?<D>\d\d)です。非キャプチャ グループは、一致が既存のキャプチャ グループから削除されることを意味するものではありません。これは、新しいキャプチャ グループが作成されないことを意味するだけです。

于 2012-09-06T06:35:36.153 に答える
1

試す:

(?<M>Jan)(?:uary)? (?<D>\d\d)
于 2012-09-06T06:43:08.183 に答える