Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中一次性从整个字符串中转义所有特殊字符_Java_Lucene - Fatal编程技术网

如何在Java中一次性从整个字符串中转义所有特殊字符

如何在Java中一次性从整个字符串中转义所有特殊字符,java,lucene,Java,Lucene,Lucene支持转义作为查询语法一部分的特殊字符。当前列表中的特殊字符为 + - && || ! ( ) { } [ ] ^ " ~ * ? : \ 要转义这些字符,请在字符前使用\。例如,要搜索(1+1):2请使用以下查询: \(1\+1\)\:2 我的问题是如何一次跳出整个字符串?例如myStringToEscape=“ABC^”~*?:DEF”如何获取可以使用的转义字符串,例如: String escapedString = queryParser.escape(sea

Lucene支持转义作为查询语法一部分的特殊字符。当前列表中的特殊字符为

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \
要转义这些字符,请在字符前使用\。例如,要搜索(1+1):2请使用以下查询:

\(1\+1\)\:2
我的问题是如何一次跳出整个字符串?例如
myStringToEscape=“ABC^”~*?:DEF”
如何获取可以使用的转义字符串,例如:

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

如果你只是想找一个简单的替代品,这就可以了

String regex = "([+\\-!\\(\\){}\\[\\]^\"~*?:\\\\]|[&\\|]{2})";

String myStringToEscape = "ABC^ \" ~ * ? :DEF";
String myEscapedString = myStringToEscape.replaceAll(regex, "\\\\$1");

System.out.println(myEscapedString);
这将输出:

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