我正在尝试转义 Java 中的 RegExp 元字符。以下是我想要的:
INPUT STRING: "This is $ test"
OUTPUT STRING: "This is \$ test"
这就是我目前正在做的事情,但它不起作用:
String inputStr= "This is $ test";
inputStr = inputStr.replaceAll("$","\\$");
但是我得到了错误的输出:
"This is $ test$"
最佳答案
您需要:
inputStr.replaceAll("\\$", "\\\\\\$");
要替换的字符串需要2个反斜杠,因为$在正则表达式中具有特殊含义。因此 $ 必须被转义,才能得到:\$
,并且反斜杠必须本身在 java 字符串中转义:"\\$"
.
替换字符串需要 6 个反斜杠,因为 \ 和 $ 在替换字符串中都有特殊含义:
- \可用于转义替换字符串中的字符。
- $ 可用于在替换字符串中进行反向引用。
因此,如果您想要的替换字符串是“\$”,则需要对这两个字符中的每一个进行转义以获得:\\\$
,然后需要使用每个反斜杠 - 3其中,1 个文字和 2 个转义字符 - 必须也 在 java 字符串中转义:"\\\\\\$"
。
关于java - 转义 Java RegEx 元字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11041674/