使用Aviator达式引擎处理表达式判断
Aviator是一个高性能、轻量级的基于java实现的表达式引擎,它动态地将String类型的表达式编译成Java ByteCode并交给JVM执行。
Aviator支持所有的关系运算符和算术运算符,不支持位运算,同时支持表达式的优先级,优先级跟Java的运算符一样,并且支持通过括号来强制优先级。
示例代码:
Map<String, Object> env = new HashMap<String, Object>();
env.put("email", "killme2008@gmail.com");
String name = (String)AviatorEvaluator.execute("email=~/([\\w0-8]+@\\w+[\\.\\w+]+)/ ? $1:'unknow'", env);
import com.googlecode.aviator.AviatorEvaluator;
for (LERule lERule:lERules) {
String rulePatternTemplate = lERule.getRulePattern();
String rulePatternStr = FreemarkerTemplateUtil.processFreemarker(rulePatternTemplate, bPBody.getBPInfo());
if(StringUtils.isNotBlank(rulePatternStr)){
boolean isEvent = (Boolean) AviatorEvaluator.execute(rulePatternStr);
if(isEvent){
lEList.add(lERule.getLE());
}
}
}
maven的坐标:
<dependency><groupId>com.googlecode.aviator</groupId><artifactId>aviator</artifactId><version>5.2.7</version> </dependency>
使用Aviator达式引擎处理表达式判断相关推荐
- c语言的运算符表格,C语言教案(运算符和表格达式).ppt
C语言教案(运算符和表格达式) 运算符与表达式 第二讲 运算符和表达式 引例 概念及分类 优先级和结合性 算术运算 关系运算 逻辑运算 位运算 赋值运算符 逗号运算符 条件运算符 引例 引例 问题 输 ...
- java 课程设计表达式求值_NYOJ-35-表达式求值
NYOJ-35-表达式求值 很好的一题,利用栈来计算表达式的值 四则运算的规则:1.先乘除,后加减:2.从左算到右:3.先括号内,后括号外 注意把字符串转换成浮点数可以使用atof函数 #includ ...
- 定义变量和常量的规范 c语言,C语言编程规范教材及练习(标识符命名与定义 变量 宏、常量 表的达式).pptx...
C语言编程规范教材及练习(标识符命名与定义 变量 宏.常量 表的达式) C语言编程规范教材C语言编程规范工作组 201104目录标识符命名与定义 变量宏.常量表达式标识符的命名要清晰原则3.1 标识符 ...
- 用 C 语言开发一门编程语言 — Q-表达式
目录 文章目录 目录 前文列表 Q-表达式 读取并存储输入 实现 Q-Expression 语法解析器 读取 Q-Expression 实现 Q-Expression 的函数 Head & T ...
- 用 C 语言开发一门编程语言 — S-表达式
目录 文章目录 目录 前文列表 使用 S-表达式进行重构 读取并存储输入 实现 S-Expression 语法解析器 实现 S-Expression 存储器 实现 lval 变量的构造函数 实现 lv ...
- 三元表达式、列表推导式、生成器表达式、递归、内置函数、匿名函数
一.三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 二.列表推导式和生成器表达式 #老 ...
- 运 算 符 和 表 达式
运 算 符 指 明 对 操 作 数 所 进 行 的 运 算 . 按 操 作 数 的 数 目来分 ,可 以 有 一元 运 算 符 (如 ++.--),二 元 运 算 符 (如 +. >)和 三元 ...
- el表达式判断字符串相等
el表达式判断字符串相等 Java code 1 ${"a" == "a"} ${"b" eq "b"} 都可以 & ...
- 列表推导式与生成表达式的区别
阅读目录 列表推导式与生成式表达式的区别: #列表推导式 -------------------------------------------------------------------- 注: ...
最新文章
- SQL语句——将Excel文档导入数据表中
- 你花了多久弄明白架构设计?kafka日志清理
- 编程之美——2.7 求最大公约数
- Selenium+python --获取百度联想词
- Android平台下OpenGL初步
- oracle0数据库论文总结,大学oracle数据库总结(考试必备)
- oracle入库的速度能到多少_多线程能提高Oracle的入库速度吗
- 在ROS-melodic中安装map_server、gmapping 等功能包
- JavaScript之 函数
- Android 学习资料收集
- linux怎么安装pcie串口卡驱动,pci串口卡驱动是什么接口 pci串口卡驱动安装方法...
- 解决Java下载Zip压缩文件,解压后报不可预料的压缩文件末端
- java截取文件名后缀
- 万达商管冲刺香港上市:上半年净赚20亿元,已提前“套现”约63亿
- 汇编8086复习——基础知识、指令汇总、上机实验踩坑
- Monitor(管程)是什么意思?Java中Monitor(管程)的介绍
- AI遮天传 DL-反馈神经网络RNN
- mysql怎么启用sa用户_安装SQL SERVER开启SA用户登录的方法
- matlab看图像分度值,也制作开源 STC15W408AS 白光T12控制器 数码管版本 洞洞板搭建...
- 简单教程:修改txt文件的图标