0

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

这是我的代码:

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

提前致谢!

4

3 回答 3

3

试试这个正则表达式

    Pattern p = Pattern.compile("\\d+,.+?(?= |$)");
于 2013-03-31T05:17:15.597 回答
3

您可以采取更简单的路线并按空格分隔,然后忽略不带逗号的任何内容:

String values = test.split(' ');

for (String value : values) {
    if (value.contains(",") {
        System.out.println("found: " + value);
    }
}
于 2013-03-31T05:17:17.763 回答
1

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

试试这个模式:"\\d+,[^\\s]*"

于 2013-03-31T05:17:34.743 回答