【问题标题】:How to escape all Special Characters from whole string at one go in Java如何在Java中一次从整个字符串中转义所有特殊字符
【发布时间】:2014-02-26 03:48:14
【问题描述】:

Lucene 支持对属于查询语法一部分的特殊字符进行转义。当前列表特殊字符为

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \

要转义这些字符,请在字符前使用 \。例如,要搜索 (1+1):2,请使用以下查询:

\(1\+1\)\:2

我的问题是如何一次性逃离整个字符串?例如myStringToEscape = "ABC^ " ~ * ? :DEF";如何获得escapedString。

【问题讨论】:

    标签: java lucene


    【解决方案1】:

    可以使用QueryParser.escape,如:

    String escapedString = queryParser.escape(searchString);
    queryParser.parse("field:" + escapedString);
    

    【讨论】:

      【解决方案2】:

      如果您只是在寻找简单的替代品,这可以解决问题。

      String regex = "([+\\-!\\(\\){}\\[\\]^\"~*?:\\\\]|[&\\|]{2})";
      
      String myStringToEscape = "ABC^ \" ~ * ? :DEF";
      String myEscapedString = myStringToEscape.replaceAll(regex, "\\\\$1");
      
      System.out.println(myEscapedString);
      

      这将输出:

      ABC\^ \" \~ \* \? \:DEF
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-24
        • 2016-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多