Pattern.matches не работает, а replaceAll - - PullRequest
7 голосов
/ 29 июня 2011

Регулярное выражение, кажется, в порядке, так как строка первой строки правильно заменяет подстроку «helloworld», но то же самое выражение не будет совпадать в последнем, так как я не вижу «whynothelloworld?»на консоли

System.out.println(current_tag.replaceAll("^[01][r]\\s", "helloworld"));

if (Pattern.matches("^[01][r]\\s", current_tag)) { System.out.println("whynothelloworld?");}

Ответы [ 2 ]

15 голосов
/ 29 июня 2011

Pattern.matches() ожидает совпадения всей строки , а не только подстроки.

Вместо этого используйте метод .find() объекта сопоставления регулярных выражений:

Pattern regex = Pattern.compile("^[01]r\\s");
Matcher regexMatcher = regex.matcher(current_tag);
foundMatch = regexMatcher.find();
0 голосов
/ 29 июня 2011

Это не может соответствовать снова, потому что вы просто заменили его на "helloworld".

Редактировать: извините, я забыл, как это работает.

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