我想找到一个数字的每个实例,后面跟一个逗号(没有空格),后跟字符串中的任意数量的字符。我能够得到一个正则表达式来查找我正在寻找的所有实例,但我想单独打印它们而不是一起打印它们。我一般都是正则表达式的新手,所以也许我的模式错了?
这是我的代码:
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
提前致谢!
答案 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]*"