我在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有什么区别吗?我做错了什么?
答案 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"
正则表达式中的第二组括号似乎是多余的,但是无害。