java中replaceAll方法的特殊问题

时间:2014-12-04 03:56:48

标签: java regex string

我输入如下:

Input: 6jVYY3Xnqt<>:"/\|?*GjznpnRQSb
testInput = testInput.replaceAll("[<>:/\\\"|?*]", "-");
output: 6jVYY3Xnqt----\---GjznpnRQSb

但如果我这样做:

testInput = testInput.replaceAll("[<>:/\"|?*]", "-");
testInput = testInput.replace("\\", "-");
output: 6jVYY3Xnqt--------GjznpnRQSb

这是java 7中的错误吗?为什么replaceAll没有使用\字符?

1 个答案:

答案 0 :(得分:2)

你需要双重转义正则表达式中的反斜杠,一次是字符串文字,一次是正则表达式:

testInput= testInput.replaceAll("[<>:/\\\\\"|?*]", "-");
//                                    ^^^^
//                                    Represents one backslash