2013-03-31 44 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]*"

相關問題