0

我想像这样解析字符串

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

我想从这个字符串中得到 ol 双打。我正在使用下一个模式

.+ ([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]

这个字符串非常相似!但首先被解析,其次不是:-(

轻松 更新模式

.+ ([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\/])+

匹配空格、一个或多个字符、空格(共 3 个字符)

第二个字符串只有 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

这是获得所有双打的模式

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