用Java正则表达式替换反斜杠时,为什么Pattern类不能识别单个反斜杠?

时间:2016-10-13 03:59:57

标签: java regex

具体来说,在更换某些行时

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

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

有人会想到这个

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

足以完成工作,因为模式\\返回文字\,并且鉴于匹配器找到它,替换\\\\应该用文字替换所有/每个\\

但是,Pattern类并不理解\\意味着查找反斜杠,因此抛出异常。这有什么问题?

1 个答案:

答案 0 :(得分:1)

问题是\也用作正则表达式中的转义字符。要匹配单个\,您需要一个必须指定为Java字符串文字\\的文字正则表达式"\\\\"。丑陋,我知道,但那是怎么回事。