最优雅的方式在java中转义$

时间:2015-04-01 05:09:53

标签: java regex

我有一个基本字符串"abc def",我正在尝试使用"abc$ def$"替换我的基本字符串replaceFirst(),因为$未转义而遇到错误。

我尝试使用Pattern和Matcher API,如下所示,

newValue = "abc$ def$";

if(newValue.contains("$")){
    Pattern specialCharacters = Pattern.compile("$");
    Matcher newMatcherValue = specialCharacters.matcher(newValue) ;
    newValue = newMatcherValue.replaceAll("\\\\$") ;
}

这会遇到错误。有没有优雅的方法用"abc$ def$"替换我的第二个字符串"abc\\\\$ def\\\\$",以便成功使用replacefirst() API?

2 个答案:

答案 0 :(得分:0)

Pattern.quote()引用正则表达式,Matcher.quoteReplacement()引用替换字符串。

那就是说,这会做你想要的吗?

System.out.println("abc def".replaceAll("([\\w]+)\\b", "$1\\$"));

打印出abc$ def$

答案 1 :(得分:0)

您只需一步即可使用replaceAll:

String newValueScaped = newValue.replaceAll("\\$", "\\\\$")

$ 在正则表达式中有一个特殊的挖掘,所以你需要对其进行挖掘。它用于匹配数据的结尾。