我不确定为什么这个正则表达式不起作用,我试图实现的是文本"用户桌面"我需要将其转换为"用户的桌面"。
这是我的尝试:
String descrip = "user's desktop";
descrip = descrip.replaceAll("'", "\\'");
但是撇号并没有被取代。我做错了什么?
答案 0 :(得分:4)
你需要两次逃避反斜杠:
String descrip = "user's desktop";
descrip = descrip.replaceAll("'", "\\\\'");
或更好不要使用正则表达式:
descrip = descrip.replace("'", "\\'");
//=> user\'s desktop
答案 1 :(得分:0)
如果要避免所有正则表达式开销,可以使用一些内置方法。比试图弄清楚要逃避的内容要容易得多:
descrip.replaceAll(Pattern.quote("'"), Matcher.quoteReplacement("\\'")