在javaregex中,使用
Matcher.find()
循环,使用
Matcher.appendReplacement/Tail
,当前只需要
StringBuffer
.
所以,像这样的工作(
see also on ideone.com
String text = "hahaha that's funny; not haha but like huahahuahaha";
Matcher m = Pattern.compile("(hu?a){2,}").matcher(text);
StringBuffer sb = new StringBuffer();
int index = 0;
while (m.find()) {
m.appendReplacement(sb,
String.format("%S[%d]", m.group(), ++index)
);
}
m.appendTail(sb);
System.out.println(sb.toString());
// prints "HAHAHA[1] that's funny; not HAHA[2] but like HUAHAHUAHAHA[3]"
API链接