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模式不匹配。
我希望能够“组成”匹配器,使它们必须始终按顺序找到。
有可能吗?
最佳答案
您可以检查前一个mat1.end()
是否等于下一个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();
}