正则表达式在java中首次出现时停止

时间:2015-07-24 16:04:54

标签: java regex

我认为我的正则表达式存在问题,因为当我寻找解决问题时,我发现只有想要在第一次出现时停止的问题。虽然,我希望我的正则表达式在第一次出现之后。

这是我的代码:

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(结尾)

2 个答案:

答案 0 :(得分:4)

你写这篇文章只是一个简单的错误。你必须继续打电话~/login

find

答案 1 :(得分:3)

如果您将print语句更改为

System.out.println(start +":"+ text +":"+ stop);

您会看到结果为1:1:2,这意味着您只能找到从12的索引字符之间的匹配。

如果你想找到像

这样的所有匹配项
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);
}