匹配器只查找字符串中的第一个实例

时间:2013-11-05 11:46:04

标签: java regex

我正在尝试创建一个regularx表达式来查找字符串中的某个模式,但是我在使它正常工作方面遇到了一些困难。我的代码如下所示:

    public String regexTest(String test) {
    Pattern p = Pattern.compile("A");
    Matcher m = p.matcher(test);

    while (m.find()) {
    return m.group();
    }
    return "";
}

如果字符串测试包含“A B C D A B A”,但它只返回“A”,而我​​希望它返回“A”,“A”和“A”。 有谁知道我在这里做错了什么?

3 个答案:

答案 0 :(得分:1)

匹配器就像一个光标。您需要致电Matcher#find()才能转到下一个结果。

m.find()
m.group() // -> first result
m.find()
m.group() // -> second result

答案 1 :(得分:0)

你在第一场比赛后回来(也就是退出你的方法),所以这就是你的问题我猜...

return m.group();

答案 2 :(得分:0)

如果要返回多个值,则不能将String作为方法返回类型。我建议使用List<String>。然后在函数中,你不能在while循环中返回,而是将找到的字符串添加到结果中(应该从空列表开始)。