2011-12-15 46 views
2

如何顯示所有匹配?例如,我有一個字符串「Hello world,你好嗎?」。 在這裏,我必須得到所有位置的字母'a'駐留。爲此,我寫了一個示例Java程序。但是這裏只有start()和end()方法可用於匹配器。我如何獲得中間結果?請解釋我..顯示中間結果的java正則表達式

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class RegexTestStrings { 


public static void main(String args[]){ 


     String line = "Hello world and how are you a"; 
     String pattern = "[a]";  
     Pattern r = Pattern.compile(pattern);  
     Matcher m = r.matcher(line); 
       if (m.find()) { 
     System.out.println(m.start());   
     System.out.println(m.end()); 


     } else { 
     System.out.println("No result foud"); 
     } 
    } 
} 
+0

`group()`/`groupCount()`應該會給你所有的匹配。 – luastoned 2011-12-15 09:24:00

+0

@luastoned編號`group()`返回`a`,`groupCount()`返回`0`。 – 2011-12-15 09:25:50

+0

謝謝..我的問題sovled .. – user414967 2011-12-15 10:21:04

回答

4

您可以多次撥打matcher.find(),它會返回下一個事件。因此,只需將if替換爲while,並在while塊內使用設置爲true的布爾標誌matchesFound,以便在不匹配時能夠打印該消息。

2

m.start()m.end()會給你開始匹配的匹配和結束索引的索引。不是匹配的值。你可以像這樣打印所有的匹配。

while(m.find()) { 
     System.out.println(m.start());   
     System.out.println(m.end()); 
     System.out.println(m.group()); 
     }