有没有有效的方法来计算String对象中正则表达式的出现?

时间:2014-06-29 15:07:35

标签: java

是否有任何有效的标准java库,除了String的split方法,它可以帮助计算给定String对象中给定正则表达式模式的出现

伙计们请对以下方法提出一些意见:

String s = "AA---AA---AA";
String[] temp = s.split("AA");
int count = temp.length - 1;

2 个答案:

答案 0 :(得分:1)

有效的方法是使用循环。标准库没有提供执行此操作的方法。

这样的事情:

Matcher m = Pattern.compile(regex).matcher(input);
int count = 0;
while (m.find()) {
    count++;
}

使用String.split(separator)的方法可能 1 效率较低,因为它需要创建一个包含字符串段的数组。当然没有理由认为split的计算复杂性与循环方法不同。


1 - 我没有费心去衡量这一点。如果这对你很重要,你应该构建一个基准......

答案 1 :(得分:0)

import java.util.regex.*;

class RegexCount {
    public static void main(String[] args) {
        String test = "Test---Test---Test";
        Pattern pattern = Pattern.compile("Test");
        Matcher  matcher = pattern.matcher(test);

        int count = 0;
        while (matcher.find())
            count++;

        System.out.println(count);
    }
}

输出: 3