2014-01-06 159 views
2

只是一個關於Java正則表達式模式的簡單問題!所以說,如果我有一個方法如..Java正則表達式模式查詢

public void example() 
    { 
     Pattern p = Pattern.compile("\\d*"); 
     Matcher m = p.matcher("ab34ef"); 
     boolean b = false; 
     while (b = m.find()) 
     { 
     System.out.println(m.start() + " " + m.group()); 
     } 
    } 

如果我跑這我最終會與下面的輸出..

 0 
    1 
    2 34 
    4 
    5 
    6 

我明白這是如何工作除了它是如何結束6,我認爲它會在5完成,有人可以給我解釋一下嗎?謝謝!

+0

6是最後的空字符。 –

+2

順便說一句,你的'b'完全是多餘的。你從來沒有讀過它。 –

回答

3

在您的字符串"ab34ef"中,有7個「空字符」,值爲""。它們位於每個正常字符之間。它試圖找到每個字符開始匹配,而不是每個正常字符;即每個|的位置如下:"|a|b|3|4|e|f|"

+0

啊!得到它了!輝煌!謝謝! :) – bdavies6086

+0

@ user3087397沒問題。很高興我能幫上忙! –