Matcher.replaceAll()
Заменяет все совпадения строкой или результатом функции, которая получает каждое совпадение.
Доступно с: Java 1.4
Синтаксис
public String replaceAll(Function<MatchResult, String> replacer)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| replacer | Function<MatchResult, String> / String | Строка замены ($1 — группа) или функция, которая по совпадению возвращает замену. |
Возвращаемое значение
StringНовая строка.
Примеры
Вычисляемая замена — удвоить каждое число:
void main() {
Matcher m = Pattern.compile("\\d+").matcher("3 apples and 12 pears");
String result = m.replaceAll(r -> String.valueOf(Integer.parseInt(r.group()) * 2));
IO.println(result);
}Результат:
6 apples and 24 pearsЗамена с группой: каждое слово с заглавной буквы:
void main() {
Matcher m = Pattern.compile("\\b(\\w)(\\w*)").matcher("hello big world");
IO.println(m.replaceAll(r -> r.group(1).toUpperCase() + r.group(2)));
}Результат:
Hello Big WorldПримечания
Строку замены с группами $1, $2 проще передать в String.replaceAll(). Вариант с функцией (Java 9) нужен, когда замену надо вычислить. Если результат функции содержит $ или \, оберните его в Matcher.quoteReplacement().
См. также
- String.replaceAll() — Заменяет все совпадения регулярного выражения.
- Matcher.group() — Возвращает текст найденного совпадения или его группы в скобках.
- Pattern.compile() — Компилирует регулярное выражение в объект Pattern, который можно использовать много раз.
В учебнике
- Регулярные выражения — Регулярные выражения в Java: matches, replaceAll, split по шаблону, классы Pattern и Matcher, группы и экранирование обратной косой черты.