java - Matcher find() 特定的重复模式

标签 java regex

这是我的数据:

'%%case.r_object_id%%' and  application_phase = '%%case.status%%'  and rp.quality =  '%%case.<reno_application_person>.<child>.quality%%

我想获取所有用双百分号 %% 括起来的对象,我们有 3 个。

根据我的实现,matcher.find() 找到第一个 %%最后一个%%在字符串中。所以它只是一个循环。我如何调整我的正则表达式或代码以确保我获得 3 个匹配项?

Matcher matcher = Pattern.compile("(%%[^\"\n]+%%)").matcher(results);

    while (matcher.find()) {
                try {
                    matcher.appendReplacement(stringbuffer, getReplacementStringValue(matcher.group().replaceAll("%", "")));
                } catch (DocumentGeneratorException e1) {
                    e1.printStackTrace();
                }
            }

最佳答案

您的意思是这个正则表达式%%(.*?)%%:

String regex = "%%(.*?)%%";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);

while (matcher.find()) {                                                
    System.out.println(matcher.group(1));
    //                               ^------note to get the group one
}

输出

case.r_object_id
case.status
case.<reno_application_person>.<child>.quality

关于java - Matcher find() 特定的重复模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46279449/

相关文章:

javascript - 如何将字符串对象的值添加到JS正则表达式中?

java - java中的组和模式匹配

Java - 在巨型列表中追加和删除的最佳策略?

java - 使用 php 动态创建 JNLP,但存在icedtea web 启动问题

java - 添加原子 double

java - JVM 中多次出现同名组?

Java 正则表达式,正面看后面看负面前瞻

regex - 检查变量是否包含 PostgreSQL 函数中的 x

java - 使用 Mule 调用将 MuleMessage 传递给 Java 方法

java - 编码和解码 rfc2396 URL