проверить правильность регулярного выражения с помощью Java - PullRequest
0 голосов
/ 02 октября 2011

Мне нужно проверить строку, используя регулярное выражение, строка должна быть похожа на «createRobot (x, y)», где x и y - цифры.

У меня есть что-то вроде

    String ins; 

    Pattern ptncreate= Pattern.compile("^createRobot(+\\d,\\d)");
    Matcher m = ptncreate.matcher(ins);
    System.out.println(m.find());

но не работает

Вы можете мне помочь?.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 02 октября 2011

Вы забыли слово Robot в своем шаблоне. Кроме того, круглые скобки являются специальными символами в регулярном выражении, и + следует ставить после \d, а не после (:

Pattern.compile("^createRobot\\(\\d+,\\d+\\)$")

Обратите внимание, что если вы хотите проверить ввод, который должен состоять исключительно из этой "createRobot" -строки, вы также можете сделать следующее:

boolean success = s.matches("createRobot\\(\\d+,\\d+\\)");

, где s - это String, который вы хотите проверить. Но если вы хотите получить сопоставленные числа, вам do необходимо использовать Pattern / Matcher:

Pattern p = Pattern.compile("createRobot\\((\\d+),(\\d+)\\)");
Matcher m = p.matcher("createRobot(12,345)");
if(m.matches()) {
  System.out.printf("x=%s, y=%s", m.group(1), m.group(2));
}

Как видите, после вызова Matcher.matches() (или Matcher.find()) вы можете получить n th match-group через group(n).

0 голосов
/ 02 октября 2011

Вы должны добавить \ перед (, потому что ( в регулярном выражении является символом специальной группы

Регулярное выражение: ^ Создать (\ d + \ d +)

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