string.replaceAll()如何工作?

时间:2014-02-17 03:52:19

标签: java regex string replaceall

我正在制作一个替换字符串某个部分的程序。

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

输出: h \ sllo

但是

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

输出: \ s

为什么我们在第一种情况下需要额外的转义字符。

1 个答案:

答案 0 :(得分:4)

  • 在regex
  • 中,您需要\\\个字符
  • 但Java字符串也会解释反斜杠,因此您需要为String释放每个\,因此您需要2 + 2 = 4个反斜杠来匹配单个\(2表示字符串,2表示正则表达式引擎)
  • 另请注意,String#replaceAll方法的第二个参数也由正则表达式引擎解释,因为可能存在反向引用,这也是同样的正则表达式规则也适用于替换字符串的原因。
  • 您的正则表达式使用的是文字\的替换字符串,后跟文字s