2013-03-31 43 views
0

我想查找一个数字的每个实例,后跟逗号(无空格),后跟任意数量的字符串。我能够得到一个正则表达式来查找我正在寻找的所有实例,但是我想单独打印它们而不是所有实例。一般来说,我是新来的正规表达式,所以也许我的模式是错误的?如何在Java中使用正则表达式从一个字符串中查找多个子字符串?

这是我的代码:

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

尝试这个表达式

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

完美的作品,谢谢 – Archer

3

你可以采取更简单的途径和空间分割,则忽略不逗号什么:

String values = test.split(' '); 

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

这似乎更容易,但我必须添加一些更多的条件后作出的正则表达式更适合。谢谢你! – Archer

+0

Yout打败了我4分钟@pickypg –

+1

@Archer然后我相信最好把这个条件添加到问题中。所以人们在回答之前可以记住它。 –

1

你显然留下些什么的您的要求语句是哪里“任意数量的字符”应该结束。就目前而言,它结束于字符串的末尾;从您的示例输出中,似乎您希望它在第一个空间结束。

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

相关问题