Java正则表达式逃避撇号

时间:2015-05-14 17:15:48

标签: java regex

我不确定为什么这个正则表达式不起作用,我试图实现的是文本"用户桌面"我需要将其转换为"用户的桌面"。

这是我的尝试:

String descrip = "user's desktop";
descrip = descrip.replaceAll("'", "\\'");

但是撇号并没有被取代。我做错了什么?

2 个答案:

答案 0 :(得分:4)

你需要两次逃避反斜杠:

String descrip = "user's desktop";
descrip = descrip.replaceAll("'", "\\\\'");

或更好不要使用正则表达式:

descrip = descrip.replace("'", "\\'");
//=> user\'s desktop

答案 1 :(得分:0)

如果要避免所有正则表达式开销,可以使用一些内置方法。比试图弄清楚要逃避的内容要容易得多:

descrip.replaceAll(Pattern.quote("'"), Matcher.quoteReplacement("\\'")