2016-10-13 68 views
0

具體來說,替換一些行用Java正則表達式替換反斜槓時,爲什麼Pattern類不能識別單個反斜槓?

String hey = "\\t\\t"; 

到線的時候

String there = "\\\\t\\\\t"; 

人會認爲這

Pattern p = Pattern.compile("\\"); 
Matcher m = p.matcher(hey); 
if (m.find()) { 
    m.replaceAll("\\\\"); 
} 

就足以做的工作,爲\\返回文字模式\,並且考慮到匹配器找到它,替換\\\\應該替換e全部/每一個字面\\

但是,Pattern類不明白\\意味着查找反斜槓,並因此引發異常。這裏有什麼問題?

回答

1

問題是\也用作正則表達式中的轉義字符。要匹配單個\,您需要一個文字正則表達式\\,它必須被指定爲Java字符串文字"\\\\"。醜陋,我知道,但事情就是這樣。

相關問題