У меня есть строка, которая может выглядеть примерно так: «aaaaffddd» и вы хотите заменить символы, которые происходят 3 раза (или больше) с помощью [NUMBER_OF_CHARACTERS] [ONE_TIME_THE_CHARACTER] - я не очень уверен в RegEx, но я придумал «([Az]) (\ 1 {2,}), чтобы найти именно те. Тем не менее, в javas String.replaceAll() у меня нет возможности ссылаться на количество символов в группе (?), И если я использую Matcher.appendReplace() и StringBuffer, я теряю остальную часть своей строки, так как результат все равно должен включают символы, которые не встречаются 3 или более раз.Замените несколько символов по их количеству с помощью регулярного выражения
В приведенном выше примере следует кодировать в «4aff4d»
Тогда вы не использовали 'Matcher.appendReplace()' правильно. Вы должны использовать его вместе с 'find' и' appendTail', и если он будет использован правильно, он скопирует несогласованные части исходной строки. Посмотрите на [документацию по API] (http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#appendReplacement (java.lang.StringBuffer,% 20java.lang.String)) для полного примера. – Holger
Да, это была моя проблема, я добавил appendTail сразу после того, как я закончил замену всех матчей, и это сработало. – SBird