正则表达式匹配字符串不止一次

时间:2017-07-04 11:29:03

标签: java regex

我有一个字符串如下

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

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

我试过下面的模式

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

但是我已经捕获了第1组,它只返回最后一次出现

1 个答案:

答案 0 :(得分: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));
    }