1 Star 1 Fork 0

zhanghg/expr-engine

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

expr-engine

介绍

基于类sql的表达式引擎,可判断where后的逻辑

使用说明

表达式引擎支持的运算符:

  • 关系运算符:=,!=,>,>=,<,<=,in,is null,is not null,startWith,endWith,contains,notContains
  • 逻辑运算符:and ,or,not(逻辑与或非)

支持组合与优先级:

  • not in可通过逻辑运算符not+关系运算符in实现
  • is not null也可通过逻辑运算符not+关系运算符is null实现
  • 支持(),优先级从左到右,()里面的优先,()与()之间,也是从左到右,符合正常数学层面理解的优先级

表达式书写要求:

  • 字符串必要使用"'"开始,"'"结束
  • startWith,endWith,contains,notContains不区分大小写
  • in后面必须带括号
  • and、or、not、in、is null、is not null左右两边至少要有一个空格,is null、is not null中的空格至少一个,多空格无影响
  • and、or、not、in、is null、is not null不区分大小写

使用示例:

         // 测试 startWith  endWith 
        Map<String, Object> map= new HashMap<>();
        map.put("a", "123456");
        map.put("b", "5");
        map.put("c", "2");
        map.put("d", null);
        Expression exp= ExpressionParser.fromString("c endWith '2' and (a startWith '123' OR b != '5')");
        boolean b = exp.interpret(map);
        System.out.println("exp match result [true]:" + b);


         // 测试 in
        map= new HashMap<>();
        map.put("a", 1);
        Expression exp2 = ExpressionParser.fromString("a in (1,2,3)");
        b = exp2.interpret(map);
        System.out.println("exp2 match result [true]:" + b);

        // 测试 contains
        map= new HashMap<>();
        map.put("a", 1);
        map.put("b", "1zhanf21jkd21");
        Expression exp3 = ExpressionParser.fromString("(a in (6,2,3) and b contains '214j') OR (a = 3 OR b != '1')");
        b = exp3.interpret(map);
        System.out.println("exp3 match result [true]:" + b);

参与贡献

  1. 所有代码均来自于 https://github.com/wujiuye/jexpr-engine (感谢),本代码只做了部分调整,增加了startWith,endWith,contains,notContains的支持。
  2. 做记录提交gitee,希望可以帮到更多的人或者欢迎指教。

空文件

简介

基于类sql的表达式引擎,可判断where后的逻辑 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/zhg101/expr-engine.git
git@gitee.com:zhg101/expr-engine.git
zhg101
expr-engine
expr-engine
master

搜索帮助

Cb406eda 1850385 E526c682 1850385