我想用"\\_\\_\\_\\_\\_"
(e.g. String str = "Hello World")
如果我str.replaceAll("World", "\\_\\_\\_\\_\\_");
我在替换后的字符串中看不到"\"
字符,我希望它会显示"Hello \_\_\_\_\_"
答案 0 :(得分:4)
你需要:
str = str.replaceAll("World", "\\\\_\\\\_\\\\_\\\\_\\\\_");
\
是Java字符串中的转义字符。所以要表示文字\
,您需要使用另一个\
作为\\
将其转义。
\
也是正则表达式引擎的转义字符。因此,Java字符串中的\\
将作为\
发送到正则表达式引擎,不会按字面处理,而是用于转义后续字符。
要将\\
传递给regex引擎,您需要在Java字符串中包含\\\\
。
由于您正在用另一个字符串替换字符串(而不是模式),实际上不需要正则表达式,您可以使用replace
类的String
方法为:
input = input.replace("World", "\\_\\_\\_\\_\\_");
答案 1 :(得分:2)
您需要使用4个反斜杠插入一个。
重点是:在文字java字符串中,反斜杠是一个转义字符,因此文字字符串“\”是一个反斜杠。但在正则表达式中,反斜杠也是一个转义字符。正则表达式\匹配单个反斜杠。这个作为Java字符串的正则表达式变为“\\”。
所以尝试这样的事情:
String str = "hello world";
System.out.println(str.replace("world","\\\\_\\\\_\\\\_\\\\"));
答案 2 :(得分:1)
查看this帖子。