java.util.regex.PatternSyntaxException: Unclosed character class near index 正则表达式转义问题
private static void test(String s) {String regex = fromZookeeper();// 从zookeeper实时获取正则表达式Pattern pattern = Pattern.compile(regex);Matcher emojiMatcher = pattern.matcher(s);}当从zookeeper中实时获取正则表达式使用时,会提
·
private static void test(String s) {
String regex = fromZookeeper();// 从zookeeper实时获取正则表达式
Pattern pattern = Pattern.compile(regex);
Matcher emojiMatcher = pattern.matcher(s);
}
当从zookeeper中实时获取正则表达式使用时,会提示转义异常,如下
java.util.regex.PatternSyntaxException: Unclosed character class near index 57
[^a-zA-Z0-9一-龥~ `!@#$%^&*()-=_+[]{}|\:;"'<>,.,。、??/“”‘’#:]
解决方案:只要将正则表达式中的特殊字符加上转义符号(//)即可,但处理起来很麻烦。
Pattern类有提供一个方法来处理未转义的字符 :java.util.regex.Pattern#quote,测试是有效的。代码如下
private static void test(String s) {
String regex = fromZookeeper();// 从zookeeper实时获取正则表达式
Pattern pattern = Pattern.compile(Pattern.quote(regex));// 将未转义的特殊字符转义
Matcher emojiMatcher = pattern.matcher(s);
}
更多推荐
已为社区贡献2条内容
所有评论(0)