Como anexarReplacement em um grupo Matcher em vez de todo o padrão?

Estou usando umwhile(matcher.find()) para percorrer todas as correspondências de um padrão. Para cada instância ou correspondência desse padrão encontrado, desejo substituirmatcher.group(3) com algum texto novo. Este texto será diferente para cada um, então estou usandomatcher.appendReplacement() para reconstruir a sequência original com as novas alterações à medida que ela passa. Contudo,appendReplacement() substitui o padrão inteiro em vez de apenas o grupo.

Como posso fazer isso, mas apenas modificar o terceiro grupo da partida, em vez de todo o padrão?

Aqui está um exemplo de código:

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));
}

mas eu gostaria de fazer algo assim (obviamente isso não funciona).

...
while(matcher.find()){
   matcher.group(3).appendReplacement(buffer, processTheGroup(matcher.group(3));
}

Algo assim, onde apenas substitui um determinado grupo, não o Padrão inteiro.

EDIT: alterou o exemplo de regex para mostrar que nem todo o padrão está agrupado.

questionAnswers(2)

yourAnswerToTheQuestion