Java 转义模式中除某些元字符以外的所有字符

Java 转义模式中除某些元字符以外的所有字符,java,regex,escaping,Java,Regex,Escaping,我希望允许用户在搜索中使用“*”元字符,并希望使用用户在pattern.compile中输入的模式。因此,除了*之外,我必须转义用户输入的所有其他元字符。我是用下面的代码做的,有更好的方法吗 private String escapePattern(String pattern) { final String PATTERN_MATCH_ALL = ".*"; if(null == pattern || "".equals(pattern.trim())) {

我希望允许用户在搜索中使用
“*”
元字符,并希望使用用户在
pattern.compile中输入的模式。因此,除了
*
之外,我必须转义用户输入的所有其他元字符。我是用下面的代码做的,有更好的方法吗

private String escapePattern(String pattern) {
        final String PATTERN_MATCH_ALL = ".*"; 
        if(null == pattern || "".equals(pattern.trim())) { 
            return PATTERN_MATCH_ALL;
        }
        String remaining = pattern;
        String result = "";
        int index;
        while((index = remaining.indexOf("*")) >= 0) { 
            if(index > 0) {
                result += Pattern.quote(remaining.substring(0, index)) + PATTERN_MATCH_ALL;
            }
            if(index < remaining.length()-1) {
                remaining = remaining.substring(index + 1);
            } else
                remaining = "";
        }
        return result + Pattern.quote(remaining) + PATTERN_MATCH_ALL;
    }
私有字符串转义模式(字符串模式){
最终字符串模式_MATCH_ALL=“*”;
如果(null==pattern | |“”.equals(pattern.trim()){
返回模式匹配所有;
}
剩余字符串=模式;
字符串结果=”;
整数指数;
而((index=remaining.indexOf(“*”)>=0){
如果(索引>0){
结果+=Pattern.quote(剩余的子字符串(0,索引))+Pattern\u MATCH\u ALL;
}
如果(索引<剩余长度()-1){
剩余=剩余。子字符串(索引+1);
}否则
剩余=”;
}
返回结果+模式。引用(剩余)+模式匹配所有;
}
怎么样

"\\Q" + pattern.replace("*", "\\E.*\\Q") + "\\E";

你想改进什么?可读性?演出简洁性?我写的代码非常冗长,而且我想使用任何内置的功能来为我做这件事,而不是我自己做这件事。因此,可读性和简洁性