2

私の文字列は:

04/30/13 INCOME REINVEST 0.0245 $24.66 $12.34 1.998 1,008.369 05/31/13 INCOME REINVEST 0.0228 $22.99 $12.22 1.881 1,010.250 06/28/13 INCOME REINVEST 0.0224 $22.63 $11.97 1.891 1,012.141

私の正規表現は次のとおりです。

([0-9]{2}/[0-9]{2}/[0-9]{2})\\s*([\\w ]+).+?\\$((?:(?:\\d+|\\d+,\\d+)\\.\\d+\\s\\$?){3})

私の予想される出力は、3つのグループからのものです:

04/30/13 INCOME REINVEST 24.66 $12.34 1.998

初戦へ。しかし、私は得る:

04/30/13 INCOME REINVEST 0 24.66 $12.34 1.998

0マッチした 2 番目のグループでエクストラを取得するのはなぜですか?

4

2 に答える 2

0

問題は、\w単語の文字に一致し、数字が単語の文字であるため、[\w ]+と一致することINCOME REINVEST 0です。ドットは単語文字ではないため、ドットで停止します (\wのショートカットとして定義されてい[a-zA-Z0-9_]ます)。

[a-zA-Z_ ]の代わりに、別のクラスを使用する必要があります[\w ]。(柔軟性を高めるために、これを使用することもできます。[\p{L}\s]これは、「任意の文字または空白」を意味します)

于 2013-11-12T13:45:26.077 に答える