在Java RegEx中捕获点和逗号

时间:2011-12-09 13:12:37

标签: java regex

我在Java中有以下代码:

Pattern fieldsPattern = Pattern.compile("(\"([^\"]+)\")|"
                                       +"("+this.field_tag+"([0-9a-zA-Z_]+))");
Matcher fieldsMatcher = fieldsPattern.matcher(field);
while(fieldsMatcher.find())
{
  //...
}

此代码应捕获像“expression”和:expression这样的表达式(field_tag只是“:”)。当我尝试捕获像“10.1”或“10,1”这样的表达式时,会出现问题。它不起作用。

但表达式:

"10-1",
"10+1" 

按预期工作。

我也试过在regexpal.com上使用这个regexp - 使用RegExp的javascript实现的网站。在这个网站上,像“10.1”和“10,1”这样的表达式可以正常工作。

在捕获点时,java与javascript有什么区别吗?我做错了什么?

1 个答案:

答案 0 :(得分:1)

这对我有用

Pattern fieldsPattern = Pattern.compile("(\"[^\"]+\")");
String field =" aa \"10\" \"10.1\" and \"10,1\"";
Matcher fieldsMatcher = fieldsPattern.matcher(field);
while(fieldsMatcher.find()) {
    System.out.println(fieldsMatcher.group());
}

打印

"10"
"10.1"
"10,1"

正则表达式中的第二组括号似乎是多余的,但是无害。