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达式引擎处理表达式判断相关推荐

  1. c语言的运算符表格,C语言教案(运算符和表格达式).ppt

    C语言教案(运算符和表格达式) 运算符与表达式 第二讲 运算符和表达式 引例 概念及分类 优先级和结合性 算术运算 关系运算 逻辑运算 位运算 赋值运算符 逗号运算符 条件运算符 引例 引例 问题 输 ...

  2. java 课程设计表达式求值_NYOJ-35-表达式求值

    NYOJ-35-表达式求值 很好的一题,利用栈来计算表达式的值 四则运算的规则:1.先乘除,后加减:2.从左算到右:3.先括号内,后括号外 注意把字符串转换成浮点数可以使用atof函数 #includ ...

  3. 定义变量和常量的规范 c语言,C语言编程规范教材及练习(标识符命名与定义 变量 宏、常量 表的达式).pptx...

    C语言编程规范教材及练习(标识符命名与定义 变量 宏.常量 表的达式) C语言编程规范教材C语言编程规范工作组 201104目录标识符命名与定义 变量宏.常量表达式标识符的命名要清晰原则3.1 标识符 ...

  4. 用 C 语言开发一门编程语言 — Q-表达式

    目录 文章目录 目录 前文列表 Q-表达式 读取并存储输入 实现 Q-Expression 语法解析器 读取 Q-Expression 实现 Q-Expression 的函数 Head & T ...

  5. 用 C 语言开发一门编程语言 — S-表达式

    目录 文章目录 目录 前文列表 使用 S-表达式进行重构 读取并存储输入 实现 S-Expression 语法解析器 实现 S-Expression 存储器 实现 lval 变量的构造函数 实现 lv ...

  6. 三元表达式、列表推导式、生成器表达式、递归、内置函数、匿名函数

    一.三元表达式 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 二.列表推导式和生成器表达式 #老 ...

  7. 运 算 符 和 表 达式

    运 算 符 指 明 对 操 作 数 所 进 行 的 运 算 . 按 操 作 数 的 数 目来分 ,可 以 有 一元 运 算 符 (如 ++.--),二 元 运 算 符 (如 +. >)和 三元 ...

  8. el表达式判断字符串相等

    el表达式判断字符串相等 Java code 1 ${"a" == "a"}  ${"b" eq "b"}  都可以 & ...

  9. 列表推导式与生成表达式的区别

    阅读目录 列表推导式与生成式表达式的区别: #列表推导式 -------------------------------------------------------------------- 注: ...

最新文章

  1. SQL语句——将Excel文档导入数据表中
  2. 你花了多久弄明白架构设计?kafka日志清理
  3. 编程之美——2.7 求最大公约数
  4. Selenium+python --获取百度联想词
  5. Android平台下OpenGL初步
  6. oracle0数据库论文总结,大学oracle数据库总结(考试必备)
  7. oracle入库的速度能到多少_多线程能提高Oracle的入库速度吗
  8. 在ROS-melodic中安装map_server、gmapping 等功能包
  9. JavaScript之 函数
  10. Android 学习资料收集
  11. linux怎么安装pcie串口卡驱动,pci串口卡驱动是什么接口 pci串口卡驱动安装方法...
  12. 解决Java下载Zip压缩文件,解压后报不可预料的压缩文件末端
  13. java截取文件名后缀
  14. 万达商管冲刺香港上市:上半年净赚20亿元,已提前“套现”约63亿
  15. 汇编8086复习——基础知识、指令汇总、上机实验踩坑
  16. Monitor(管程)是什么意思?Java中Monitor(管程)的介绍
  17. AI遮天传 DL-反馈神经网络RNN
  18. mysql怎么启用sa用户_安装SQL SERVER开启SA用户登录的方法
  19. matlab看图像分度值,也制作开源 STC15W408AS 白光T12控制器 数码管版本 洞洞板搭建...
  20. 简单教程:修改txt文件的图标

热门文章

  1. 网工日常必备思科华为设备命令对照表,全网最完整
  2. 正则表达式中小括号、中括号、大括号的作用
  3. error C3859 error 1076
  4. 从种蘑菇到敲代码,谁说女孩子就不适合做编程?
  5. 数据库中常见的几种表连接方式
  6. PHP Xdebug3 + VS Code 新版配置踩坑
  7. abtest-显著性差异(significance test)
  8. 软件民工的幸福生活4
  9. 负责任的NOKIA诺基亚,防守反击见奇效
  10. hdu1852 Beijing 2008(约数之和 : 无逆元除法取模 | 等比数列分治求和)