Java中的模式和匹配器:匹配器只找到一个匹配而不是两个匹配

时间:2017-08-18 08:23:21

标签: java regex

我正在使用Java中的Pattern和Matcher。我有以下代码:

String searchString = "0,00,0";
String searchInText = "0,00,00,0"
Pattern p = Pattern.compile(searchString);
Matcher m = p.matcher(searchString);
while(m.find){
  ... 
}

我的问题是匹配器只找到从第一个零到第四个零的一个匹配。但是应该存在从第3个零到最后一个零的另一个匹配。

有人能帮助我吗?有解决方法吗?

1 个答案:

答案 0 :(得分:2)

使用正则表达式获取overlapping matches非常棘手,尤其是如果您对正则表达式不是很熟悉的话。

如果您没有真正使用正则表达式功能(如您的示例中所示),则可以使用indexOf(String, int)轻松执行此操作,并不断增加您从中进行搜索的索引。< / p>

int index = 0;
while((index = text.indexOf(pattern, index)) > -1) {
    System.out.println(index + " " + pattern);
    index++;
}