-1

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

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

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

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

4

3 回答 3

1

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

m.find()
m.group() // -> first result
m.find()
m.group() // -> second result
于 2013-11-05T11:49:35.710 回答
0

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

return m.group();
于 2013-11-05T11:48:04.377 回答
0

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

于 2013-11-05T11:49:12.137 回答