Java 1.7.Как заменить два символа рядом в регулярном выражении? - PullRequest
3 голосов
/ 03 мая 2019

У меня есть код:

String str = "1 */ * / 2";

str = str.replaceAll("\\*/", " ");

System.out.println(str);

Он дает мне следующий результат, и он правильный:

1 * / 2

НоМне нужно получить противоположный результат, и я делаю:

String str = "1 */ * / 2";

str = str.replaceAll("[^\\*/]", " ");

System.out.println(str);

и получаю:

* / * /

Но не:

* /

Мне нужно собрать вместе только эти два символа, исключая отдельно * и /

Как я могу это сделать?

1 Ответ

2 голосов
/ 03 мая 2019

replaceAll(regex, replacement) пытается найти шаблон, представленный regex, и заменить , который соответствует , содержимым replacement.Если вы не хотите его заменять, а, скажем, только печатаете его, вместо String#replaceAll используйте Matcher#find как

String str = "1 */ * / 2";

Pattern p = Pattern.compile("\\*/");
Matcher m = p.matcher(str);
while(m.find()){
    String match = m.group();
    //do something with match
    System.out.println(match);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...