java - 正则表达式多次匹配字符串

标签 java regex

我有一个字符串如下

"SampleFilter('x','y','z') AND TestFilter('a','b','c') AND SampleFilter('d','e','f')"

这里我想要一个正则表达式来匹配 SampleFilter 的出现,因此我希望输出返回所有 SampleFilter 的出现

我尝试过以下模式

".*SampleFilter\\((.*?)\\).*"

但是我已经捕获了组 1,并且它只返回最后一次出现的情况

最佳答案

您无法通过简单的匹配来检索您的数据;你需要迭代:

    String text = "SampleFilter('x','y','z') AND TestFilter('a','b','c')"
            + " AND SampleFilter('d','e','f')";
    Pattern re = Pattern.compile("SampleFilter\\((.*?)\\)");
    Matcher matcher = re.matcher(text);
    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }

关于java - 正则表达式多次匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44904776/

相关文章:

javascript - 正则表达式:在 Javascript 中检测/删除 ccTLD 通配符?

regex - sed命令显示

java - 尝试使用匿名凭证从 AWS S3 中列出对象,但它仍在检查 ~/.aws/credentials

java - 在 LibGDX 中每次都不会调用 ContactListner(Box2d) 的 EndContact

c# - 如何大写正则表达式模式?

regex - 正则表达式用于在一个字符串包含另一个字符串时查找两个字符串之一

java - 为什么他们从 Spring Framework 5 中删除了对 VelocityEngineUtils 的支持?

java - 打印方阵并使用 Java 对其进行转置

java - spring batch rowNum不增加

javascript - 如何生成正则表达式字符串来检查第二个单词是否大写