java - java中replaceAll方法的特殊问题

标签 java regex string

我的输入如下:

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

但如果我这样做:

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

这是 java 7 中的错误吗?为什么 replaceAll 不采用 \ 字符?

最佳答案

您需要对正则表达式中的反斜杠进行两次转义,一次用于字符串文字,一次用于正则表达式:

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

关于java - java中replaceAll方法的特殊问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27286030/

相关文章:

javascript - 查找文本中的日期

Java 将匹配项分配给变量

C# 格式化类方法的输出,现在不显示任何数据

java - AES 加密在 16 个字符后发散

java - Jboss 7 - 从辅助数据库自动切换回主数据库

java - 无法为字段设置随机枚举

regex - 我如何在 sed 的正则表达式中包含换行搜索

java - 对十亿整数求和时,c 比 java 慢

c# - 正则表达式 .NET 问题

python - 用于模糊字符串比较的好 Python 模块?