我剛開始學習正則表達式,並有下面的代碼:的Java的replaceAll用[] * - 所有字符都被發現(9長度),但結果長度爲2
[1] String replace2 = "chocolate".replaceAll("[a-z]*","*");
[2] System.out.println(replace2); //output: **
[3] replace2 = "chocolate".replaceAll("[a-c]*","*");
[4] System.out.println(replace2); //output: **h*o**o*l**t*e*
我不明白如何*作品在這種情況下:
參考[3],我的理解是,每一個被發現的字符被替換爲一顆星,每個unfound字符替換爲「一顆星+的unfound字符」
例如,字符串「巧克力」中的第一個字符是c,因此將其替換與*。第二個字符是h,它不是我們想要的,所以用* h保留它。我可以將此邏輯與[4]中的輸出相匹配。
我的問題是爲什麼[2]返回兩顆星?
試試這個'字符串replace2 = 「巧克力」 .replaceAll( 「[AZ]」,「* 「);'! – Maraboc
在[1]中,正則表達式匹配整個字符串(任意數量的字母),因此您只能獲得一顆星。 – assylias
@Maraboc它可以很好地處理你的代碼,謝謝。但我試圖理解爲什麼當我使用「[a-z] *」時,輸出是這樣的嗎?「您能和我分享一下嗎? – yogescicak