replaceAll正则表达式替换$

Ell*_*ott 0 java regex

我试图像这样替换String表达式中的所有$字符

一个带有s $的字符串和另一个带有$ s的字符串示例,这里是结尾.

这样$字符被空格包围.

我试过 string.replaceAll("$", " $ "); 这会导致非法的Argument Exception.

当我尝试像这样转义$字符时:

string.replaceAll("\$", " $ ");  I get an invalid escape sequence error before I even build.  
Run Code Online (Sandbox Code Playgroud)

当我尝试以下内容时:

string.replaceAll("\\$", " $ ");  I get an illegal argument exception again.
Run Code Online (Sandbox Code Playgroud)

最后,当我尝试这个:

string.replaceAll("\\\\$", " $ ");   
Run Code Online (Sandbox Code Playgroud)

它对字符串完全没有影响.我知道这是愚蠢的,我只是没有得到.有人可以帮忙吗?

Chr*_*ris 5

你需要在两侧都有两个斜线

string.replaceAll("\\$", " \\$ ");
Run Code Online (Sandbox Code Playgroud)

第一个转义将传递给正则表达式的第二个斜杠.然后表达式是"\ $",它与$符号匹配.而你想用相同的替换它.

你必须转义第二个参数,因为虽然它不是正则表达式,但是根据文档,$和$符号是一个特例:

请注意,替换字符串中的反斜杠()和美元符号($)可能会导致结果与将其视为文字替换字符串时的结果不同; 见Matcher.replaceAll.如果需要,使用Matcher.quoteReplacement(java.lang.String)来抑制这些字符的特殊含义.