Как добавить замену на группу Matcher вместо всего шаблона?
Я используюwhile(matcher.find())
перебрать все совпадения паттерна. Для каждого экземпляра или совпадения найденного шаблона я хочу заменитьmatcher.group(3)
с некоторым новым текстом. Этот текст будет отличаться для каждого, поэтому я используюmatcher.appendReplacement()
перестроить исходную строку с новыми изменениями по мере прохождения. Тем не мение,appendReplacement()
заменяет весь шаблон вместо только группы.
Как я могу сделать это, но изменить только третью группу матча, а не весь шаблон?
Вот пример кода:
Pattern pattern = Pattern.compile("THE (REGEX) (EXPRESSION) (WITH MULTIPLE) GROUPS");
Matcher matcher = pattern.matcher("THE TEXT TO SEARCH AND MODIFY");
StringBuffer buffer = new StringBuffer();
while(matcher.find()){
matcher.appendReplacement(buffer, processTheGroup(matcher.group(3));
}
но я хотел бы сделать что-то вроде этого (очевидно, это не работает).
...
while(matcher.find()){
matcher.group(3).appendReplacement(buffer, processTheGroup(matcher.group(3));
}
Нечто подобное, где он заменяет только определенную группу, а не весь шаблон.
РЕДАКТИРОВАТЬ: изменил пример регулярного выражения, чтобы показать, что не все шаблоны сгруппированы.