3
我想提出一個方案,替換字符串的某一部分。string.replaceAll()如何工作?
String x = "hello";
x=x.replaceAll("e","\\\\s");
System.out.println(x);
輸出:^h \ sllo
但
System.out.println("\\s");
輸出:\ S
爲什麼我們需要在第一種情況下額外的轉義字符。
我想提出一個方案,替換字符串的某一部分。string.replaceAll()如何工作?
String x = "hello";
x=x.replaceAll("e","\\\\s");
System.out.println(x);
輸出:^h \ sllo
但
System.out.println("\\s");
輸出:\ S
爲什麼我們需要在第一種情況下額外的轉義字符。
\\
單個\
字符\
爲字符串,因此你需要2 + 2 = 4個反斜槓匹配單個\
(2絃樂和2個正則表達式引擎)String#replaceAll
方法也由正則表達式引擎解釋,由於反向引用的潛力存在,這是相同的正則表達式規則也適用於替換字符串還的原因。\
隨後文字s
-1替換字符串。仔細閱讀問題。這不是他所說的正則表達式,而是它的替代字符串。 –
@AlanMoore:對不起,我寫了'matching',而不是'replacing'(現已修復),但在回答之前我看過這個問題很好。 – anubhava
我的意思是說,這是你說的第二個參數。這不是一個正則表達式,但它需要你逃避反斜槓的另一個原因。 –