0

Matcher.find 查找下一个子序列,从给定的索引开始,该索引符合正则表达式。

如果下一个字符序列不符合要求,我该如何让它失败?

前任:

    String input = "123456text123";
    Matcher mat1 = Pattern.compile("\\d+").matcher(input);

    mat1.find();
    System.out.println(mat1.group()); //123456
    mat1.find(mat1.end());
    System.out.println(mat1.group()); //123

我想知道是否有办法使第二次查找失败,因为下一个序列与 mat1 模式不匹配。

我希望能够以必须始终按顺序找到它们的方式“组合”匹配器。

有可能吗?

4

1 回答 1

1

您可以检查 previous 是否mat1.end()等于 next mat1.start()

int lastEnd = -1;
while (mat1.find()) {

    // Was there any junk between last two matches?
    if (mat1.start() != lastEnd+1) {
        System.out.println("Fail.");
        break;
    }

    System.out.println(mat1.group());
    lastEnd = mat1.end();

}
于 2012-05-14T13:07:54.983 回答