0

このようなパース文字列が欲しい

  0.1142     0.0000     0.0000     0.0004     0.0000     0.0000    2299/2299        MakeRequest   [23]

この文字列から ol double を取得したい。次のパターンを使用しています

.+ ([0-9\\.]+) [\\p{Space}]+ ([0-9\\.]+) [\\p{Space}]+ ([0-9\\.]+) [\\p{Space}]+ ([0-9\\.]+) [\\p{Space}]+ ([0-9\\.]+) [\\p{Space}]+ ([0-9\\.]+) [\\p{Space}]+ ([0-9\\/])+ [\\p{Space}] "\\.(MakeRequest) .+

そして、この文字列は適切に解析されます。
しかし、次の文字列を解析できません!

    20.1600     0.0001     0.0000     0.0053     0.0001     0.0000  383248/383248      MakeRequest   [22]

この文字列は非常に似ています! しかし、最初は解析され、2 番目は解析されません:-(

パターンを簡単に 更新

.+ ([0-9\\.]+) .+ ([0-9\\.]+) .+([0-9\\.]+) .+ ([0-9\\.]+) .+ ([0-9\\.]+) .+ ([0-9\\.]+) .+ ([0-9\\/])+ .+\\.(MakeRequest) .+

あまりにも動作しません

私は使用しています

java.util.regex.Pattern

java.util.regex.Matcher
4

3 に答える 3

4

([0-9\。]+)。+([0-9 \ /])+

スペース、1つ以上の文字、スペース(合計3文字)に一致します

2番目の文字列にはスペースが2つしかありません。

0.0000 383248/383248

于 2012-04-20T13:08:52.313 に答える
2

次のようなコードの何が問題になりますか?

  final Matcher m = Pattern.compile("\\d+\\.\\d+").matcher(s); // s is your line
  while (m.find()) System.out.println(Double.parseDouble(m.group()));
于 2012-04-20T13:09:44.940 に答える
1

これは、すべての double を取得するパターンです

[0-9]*\.[0-9]*
于 2012-04-20T13:10:50.580 に答える