【发布时间】:2014-11-06 17:13:21
【问题描述】:
我有一个可能看起来像这样的字符串:“aaaaffdddd”,并且想用 [NUMBER_OF_CHARACTERS][ONE_TIME_THE_CHARACTER] 替换出现 3 次(或更多)的字符 - 我对 RegEx 不是很有信心,但我来了加上 "([A-z])(\1{2,})" 来准确地找到那些。但是,在 javas String.replaceAll() 中,我无法引用组中的字符数(?),如果我使用 Matcher.appendReplace() 和 StringBuffer,我会丢失字符串的其余部分,因为结果应该仍然包括不出现 3 次或更多次的字符。
上面的例子应该编码为“4aff4d”
【问题讨论】:
-
那你没有正确使用
Matcher.appendReplace()。您必须将它与find和appendTail一起使用,如果使用正确,它将复制源字符串的不匹配部分。查看API documentation 获取完整示例。 -
是的,这确实是我的问题,我在替换完所有匹配项后添加了 appendTail 并且有效。