Вопрос о \ r в регулярном выражении - PullRequest
0 голосов
/ 27 октября 2019

Я хочу сопоставить строку с регулярным выражением


reg = ".*\\r.*";
str = "h\rello";
Matcher m1 = Pattern.compile(reg).matcher(str);
while (m1.find()) {
  System.out.println(m1.group());
}

Я думаю, что ответ:


h

ello

, ноответ:


ello

1 Ответ

2 голосов
/ 27 октября 2019

Это потому, что это то, что делает символ \r. На некоторых консолях \r «удаляет все в этой строке перед ней».

Если вы напечатаете:

System.out.println("a\rb");

Вы увидите только b.

Ваше регулярное выражение действительно соответствует h\rello, и оно действительно печатается System.out.println, но, поскольку \r удаляет все перед ним, вы видите только ello.

Вы можете видетьотдельные символы, которым соответствует регулярное выражение:

System.out.println(Arrays.toString(m1.group().chars().toArray()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...