Захват точки и запятой в Java RegExp - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть следующий код в 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 - сайте с реализацией javascriptRegExp.На этом сайте такие выражения, как «10.1» и «10,1» работают нормально.

Есть ли какая-либо разница между java и javascript при захвате точек?Что я делаю не так?

1 Ответ

1 голос
/ 09 декабря 2011

Это работает для меня

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"

Второй набор скобок в регулярном выражении выглядит излишним, но безвредным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...