Java 将模式匹配的每个匹配项替换为该字符串上调用的方法
我正在尝试这样做:Java 将模式匹配的每个匹配项替换为该字符串上调用的方法,java,regex,Java,Regex,我正在尝试这样做: public String evaluateString(String s){ Pattern p = Pattern.compile("someregex"); Matcher m = p.matcher(s); while(m.find()){ m.replaceCurrent(methodFoo(m.group())); } } 问题是目前没有替代方法。也许我忽略了一个等价物。基本上,我想用对该匹配调用的方法的返回值替
public String evaluateString(String s){
Pattern p = Pattern.compile("someregex");
Matcher m = p.matcher(s);
while(m.find()){
m.replaceCurrent(methodFoo(m.group()));
}
}
问题是目前没有替代方法。也许我忽略了一个等价物。基本上,我想用对该匹配调用的方法的返回值替换每个匹配。任何提示都将不胜感激 更新:
由于Java 9我们可以使用
在Java 9之前 您可以使用和
appendReplacement
将做两件事:
appendTail
将添加到当前匹配后放置的缓冲区文本中
Pattern p = Pattern.compile("yourRegex");
Matcher m = p.matcher(yourString);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, yourMethod(m.group()));
}
m.appendTail(sb);
String result = sb.toString();
Pattern p = Pattern.compile("yourRegex");
Matcher m = p.matcher(yourString);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, yourMethod(m.group()));
}
m.appendTail(sb);
String result = sb.toString();