2014-02-17 42 views
3

我想提出一個方案,替換字符串的某一部分。string.replaceAll()如何工作?

String x = "hello"; 
x=x.replaceAll("e","\\\\s"); 
System.out.println(x); 

輸出:^h \ sllo

System.out.println("\\s"); 

輸出:\ S

爲什麼我們需要在第一種情況下額外的轉義字符。

回答

4
  • 您在正則表達式需要\\單個\字符
  • 但是Java字符串也解釋反斜槓因此,你需要逃避每個\爲字符串,因此你需要2 + 2 = 4個反斜槓匹配單個\(2絃樂和2個正則表達式引擎)
  • 還要注意的是第二個參數String#replaceAll方法也由正則表達式引擎解釋,由於反向引用的潛力存在,這是相同的正則表達式規則也適用於替換字符串還的原因。
  • 你的正則表達式使用的文字\隨後文字s
+0

-1替換字符串。仔細閱讀問題。這不是他所說的正則表達式,而是它的替代字符串。 –

+0

@AlanMoore:對不起,我寫了'matching',而不是'replacing'(現已修復),但在回答之前我看過這個問題很好。 – anubhava

+0

我的意思是說,這是你說的第二個參數。這不是一個正則表達式,但它需要你逃避反斜槓的另一個原因。 –