我使用while(matcher.find())
循环遍历一个Pattern的所有匹配。对于它找到的每个实例或该模式的匹配,我想用一些新的文本替换matcher.group(3)
。每个字符串的文本都不一样,所以我使用matcher.appendReplacement()
来重建原始字符串,并在其执行过程中进行新的更改。但是,appendReplacement()
将替换整个Pattern,而不仅仅是组。
我怎么能做到这一点,但只修改第三组比赛,而不是整个模式?
以下是一些示例代码:
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));
}
类似的东西,它只替换某个组,而不是整个模式。
EDIT:更改了正则表达式示例,以显示并非所有模式都已分组