我认为我的正则表达式存在问题,因为当我寻找解决问题时,我发现只有想要在第一次出现时停止的问题。虽然,我希望我的正则表达式在第一次出现之后。
这是我的代码:
String test = "\\d";
String word = "a1ap1k7";
Pattern p = Pattern.compile(test);
Matcher b = p.matcher(word);
if (b.find()) {
int start = b.start();
String text = b.group();
int stop = b.end();
System.out.println(start + text + stop);
}
它只给我:1(开头)1(文字)2(结尾)
答案 0 :(得分:4)
你写这篇文章只是一个简单的错误。你必须继续打电话~/login
find
答案 1 :(得分:3)
如果您将print语句更改为
System.out.println(start +":"+ text +":"+ stop);
您会看到结果为1:1:2
,这意味着您只能找到从1
到2
的索引字符之间的匹配。
如果你想找到像
这样的所有匹配项1:1:2
4:1:5
6:7:7
而不是只能执行一次的if (b.find())
,请使用循环while (b.find())
,因为每个find
都可以将您转移到 一个 (下一场比赛。
while (b.find()) {// <-- change 'if' to 'while'
int start = b.start();
String text = b.group();
int stop = b.end();
System.out.println(start +":"+ text +":"+ stop);
}