我想要Java正则表达式所有匹配的索引

时间:2018-08-14 08:01:31

标签: java regex

正在研究kmp算法的人。 我想知道kmp算法是否很难用正则表达式替换。 我不喜欢这个结果。 我想要的结果是0和1。 而且我想知道正则表达式的时间复杂度是否为O(n + m)。

public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String t = "aaa";   
    Pattern p = Pattern.compile("aa");
    Matcher m = p.matcher(t);
    ArrayList<Integer> ans = new ArrayList<Integer>();

    while (m.find()) ans.add(m.start());
    for (int i : ans)
        System.out.print(i + " ");
}

我想要结果[0 1] 这个结果[1]

1 个答案:

答案 0 :(得分:0)

现在,既然我知道了你的问题, 这就是获取索引的方法。

public static void main(){
    String input = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    Pattern pattern = Pattern.compile("(?=(aaa))");
    Matcher matcher = pattern.matcher(input);
    List<Integer> all = new ArrayList<>();
    while (matcher.find()) {
        all.add(matcher.start());
    }
    System.out.println(all);
}

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]

要获取数组,只需返回all