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

Java中的模式和匹配器:匹配器只找到一个匹配项,而不是两个,java,regex,Java,Regex,我正在使用Java中的模式和匹配器。我有以下代码: String searchString = "0,00,0"; String searchInText = "0,00,00,0" Pattern p = Pattern.compile(searchString); Matcher m = p.matcher(searchString); while(m.find){ ... } 我的问题是,匹配器从第一个零到第四个零只找到一个匹配项。但是从第三个零到最后一个零应该还有另一场比赛 有人

我正在使用Java中的模式和匹配器。我有以下代码:

String searchString = "0,00,0";
String searchInText = "0,00,00,0"
Pattern p = Pattern.compile(searchString);
Matcher m = p.matcher(searchString);
while(m.find){
  ... 
}
我的问题是,匹配器从第一个零到第四个零只找到一个匹配项。但是从第三个零到最后一个零应该还有另一场比赛

有人能帮我吗?有解决办法吗?

使用正则表达式是很棘手的,特别是如果您对正则表达式不是很熟悉的话

如果您没有真正使用正则表达式功能(如在您的示例中),可以使用
indexOf(String,int)
轻松实现这一点,并不断增加执行搜索的索引

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

代码p.matcher(searchString)中有错误;应为p.matcher(searchInText);
+1
不应该在括号内,比如
index=text.indexOf(模式,索引+1)否,我们正在尝试增加
索引。然后while循环可以查看是否还有任何模式。不,我们不需要从零开始。我们可以从模式的第一次出现(可能是零)开始。嗯,这其实没什么区别。我想避免一个额外的调用会更好。嗯,依我看,它应该是
intindex=text.indexOf(模式,0);虽然(index>-1){…index=text.indexOf(pattern,index+1);}
您可以用多种方式编写它,所以实际上没有必要这样做。