Как добавить замену в группу 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));
}

Что-то вроде этого, где заменяется только определенная группа, а не весь шаблон.

РЕДАКТИРОВАТЬ: изменено пример регулярного выражения, чтобы показать, что не весь шаблон сгруппирован.

24
задан nhahtdh 12 January 2014 в 08:20
поделиться