Код: Выделить всё
static void main(String[] args) {
String exp = "foofoobarfoo";
exp = Pattern
.compile("foo(foo)")
.matcher(exp)
.replaceAll(gr -> "911" + gr.group(1) + "911");
System.out.println(exp);
}
Фактический результат: 911foo911barfoo
(Поскольку replaceAll применил строку замены ко всем совпадениям, а именно к группам gr.group(0) (foo foo bar foo) и gr.group(1) (foo bar foo) И нужно заменить только gr.group(1), без gr.group(0)).
Как выбрать конкретную группу для замены в строке из регулярного выражения?
Подробнее здесь: https://stackoverflow.com/questions/746 ... by-new-mat