Java中的模式和匹配器:匹配器只找到一个匹配项,而不是两个
我正在使用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){ ... } 我的问题是,匹配器从第一个零到第四个零只找到一个匹配项。但是从第三个零到最后一个零应该还有另一场比赛 有人
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);}
您可以用多种方式编写它,所以实际上没有必要这样做。