【问题标题】:Java regex to escape apostrophe [duplicate]Java正则表达式转义撇号[重复]
【发布时间】:2015-07-26 10:13:00
【问题描述】:

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

这是我的尝试:

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

但是撇号没有被替换。我做错了什么?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    您需要两次转义反斜杠:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-21
        • 1970-01-01
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-18
        相关资源
        最近更新 更多