Java正则表达混乱

时间:2012-04-20 13:02:00

标签: java regex

我想要像这样的解析字符串

  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

3 个答案:

答案 0 :(得分:4)

  

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

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

第二个字符串只有2个空格。

  

0.0000 383248/383248

答案 1 :(得分:2)

以下代码会出现什么问题:

  final Matcher m = Pattern.compile("\\d+\\.\\d+").matcher(s); // s is your line
  while (m.find()) System.out.println(Double.parseDouble(m.group()));

答案 2 :(得分:1)

这是获得所有双打的模式

[0-9]*\.[0-9]*