java 正則表達式替換

一直一來遇到"替換爲/" 的時候概念總是很模糊,今天要搞搞清楚。
System.out.println("/"".replace("/"", "///""));
System.out.println("/"".replaceAll("/"", "/////""));
System.out.println("/"".replaceAll("///"", "/////""));

需要注意的是:/在正則表達式裏需要再轉義一次,所以replaceAll的第二個參數變得很長。 但是最後一行爲什麼也是可以的,這個我就不明白了,查了javadoc(在james的引導下),發現有這樣一段話: It is an error to use a backslash prior to any alphabetic character that does not denote an escaped construct; these are reserved for future extensions to the regular-expression language. A backslash may be used prior to a non-alphabetic character regardless of whether that character is part of an unescaped construct. 此外還有,這樣/這個符號在正則中如果什麼都沒有跟(沒有轉義),那麼只是簡單的引用後面那個字符; 配合上面那段文檔也就是說,/+非字母字符 就等於 這個非字母字符(ie:/= 和 = 是一樣),這就解釋了 /"和"是一樣的原因,哈哈。 搞了半天是javadoc沒看仔細啊~。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章