Я использую 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));
}
Что-то вроде этого, где заменяется только определенная группа, а не весь шаблон.
РЕДАКТИРОВАТЬ: изменено пример регулярного выражения, чтобы показать, что не весь шаблон сгруппирован.