java - 如何用后处理值替换正则表达式组?

标签 java regex matcher

我有这个代码

public static String ProcessTemplateInput(String input, int count) {
        Pattern pattern = Pattern.compile("\\{([^\\}]+)\\}");
        Matcher matcher = pattern.matcher(input);
        while (matcher.find()) {
            String newelem=SelectRandomFromTemplate(matcher.group(1), count);
        }
        return input;
    }

输入是:

 String s1 = "planets {Sun|Mercury|Venus|Earth|Mars|Jupiter|Saturn|Uranus|Neptune}{?|!|.} Is this ok? ";

输出示例:

String s2="planets Sun, Mercury. Is this ok? ";

我想用该方法返回的选取值替换 {} 组模板。在 Java1.5 中如何做到这一点?

最佳答案

使用appendReplacement/appendTail:

StringBuffer output = new StringBuffer();
while (matcher.find()) {
    matcher.appendReplacement(output, SelectRandomFromTemplate(matcher.group(1), count)); 
}
matcher.appendTail(output);
return output.toString(); 

关于java - 如何用后处理值替换正则表达式组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2966657/

相关文章:

java - 为什么在 treeMap 中实现比较器后将值返回为 null?

java - 在 Java 中从线程的上下文类加载器中排除某些类?

ios - 如何检查 Swift 4.0 中是否有带正则表达式的连续字符?

javascript - 如何确定路径末尾是否包含格式?

java - 具有 junit 风格差异的 Hamcrest 匹配器

java - Java VM 对堆栈红色区域的访问无效

java - 最快的 Java 字符串查找集合?

regex - 为什么这个工作正则表达式不能与 sed 一起工作?

java - 多次正则表达式两个字符串之间的所有内容

java - 有人可以检查我关于替换 .txt 文件中的数字的代码吗?我无法替换其中的数字