我输入如下:
Input: 6jVYY3Xnqt<>:"/\|?*GjznpnRQSb
testInput = testInput.replaceAll("[<>:/\\\"|?*]", "-");
output: 6jVYY3Xnqt----\---GjznpnRQSb
但如果我这样做:
testInput = testInput.replaceAll("[<>:/\"|?*]", "-");
testInput = testInput.replace("\\", "-");
output: 6jVYY3Xnqt--------GjznpnRQSb
这是java 7中的错误吗?为什么replaceAll
没有使用\
字符?
答案 0 :(得分:2)
你需要双重转义正则表达式中的反斜杠,一次是字符串文字,一次是正则表达式:
testInput= testInput.replaceAll("[<>:/\\\\\"|?*]", "-");
// ^^^^
// Represents one backslash