Вы должны иметь только один appendReplacement()
звонок на find()
звонок:
while (matcher.find()) {
matcher.appendReplacement(sb, "");
}
Это удалит каждое полное совпадение в вашем вводе.
Если, как вы указали, вы хотите удалить некоторые части матча, то вы должны сгруппировать часть, которую вы хотите сохранить , и добавить ее к замене. Используя шаблон ab(123)c
, вы сделаете это:
while (matcher.find()) {
matcher.appendReplacement(sb, "$1");
}
Если вам нужны другие группы по каким-то другим причинам (например, вам необходимо оценить их), то вы можете оставить их (т.е. использовать (a)(b)(123)(c)
и ссылаться на третью группу, используя $3
вместо $1
).