如何在Java中使用regex从一个字符串中找到多个子字符串?

时间:2013-03-31 05:12:41

标签: java regex

我想找到一个数字的每个实例,后面跟一个逗号(没有空格),后跟字符串中的任意数量的字符。我能够得到一个正则表达式来查找我正在寻找的所有实例,但我想单独打印它们而不是一起打印它们。我一般都是正则表达式的新手,所以也许我的模式错了?

这是我的代码:

String test = "1 2,A 3,B 4,23";
Pattern p = Pattern.compile("\\d+,.+");
Matcher m = p.matcher(test);
while(m.find()) {
  System.out.println("found: " + m.group());
}

这就是它打印的内容:

found: 2,A 3,B 4,23

这就是我想要打印的内容:

found: 2,A
found: 3,B
found: 4,23

提前致谢!

3 个答案:

答案 0 :(得分:3)

试试这个正则表达式

    Pattern p = Pattern.compile("\\d+,.+?(?= |$)");

答案 1 :(得分:3)

您可以采用更简单的路线并按空格分割,然后忽略任何没有逗号的内容:

String values = test.split(' ');

for (String value : values) {
    if (value.contains(",") {
        System.out.println("found: " + value);
    }
}

答案 2 :(得分:1)

您在需求声明中显然遗漏的是“任意数量的字符”应该结束的位置。就目前而言,它终止于弦的末端;从您的示例输出中,您似乎希望它在第一个空格处结束。

尝试此模式:"\\d+,[^\\s]*"