aviatorscript
aviatorscript copied to clipboard
表达式有\u等字符串编译报错
问题
我想注册一个函数 来实现自定义的正则匹配逻辑,函数是这样的:
/**
* 正则匹配
*
* @param str 字符串
* @param reg 正则表达式
* @param allMatches 是否全文匹配
* @return 是否匹配
*/
public static boolean matchPattern(String str, String reg, boolean allMatches) {
if (StringUtils.isAnyEmpty(str, reg)) {
return false;
}
Matcher matcher = Pattern.compile(reg).matcher(str);
if (allMatches) {
return matcher.matches();
} else {
return matcher.find();
}
}
当使用aviator表达式编译时 正则中的一些转义会抛出不支持的异常 比如这个表达式
return matchPattern('很好', '[\u4e00-\u9fa5]{0,4}'); // 0-4个中文字符
其中\u会被解析器抛出无法识别异常
思路
请教下:如果移除源码中的 throw逻辑 ,可能会有哪些影响呢
com/googlecode/aviator/lexer/ExpressionLexer.java:394
加个 \ 呢?