|
rule-engine是一种轻量级、可选类型的表达式语言,具有用于匹配任意Python对象的自定义语法,使用python语言开发。规则引擎表达式用自己的语言编写,在Python中定义为字符串。其语法与Python最相似,但也受到Ruby的一些启发。这种语言的一些特性包括:可选类型提示用正则表达式匹配字符串日期时间数据类型复合数据类型(相当于Python字典、列表和集合类型)数据属性线程安全参考文档可在https://zeroSteiner.github.io/rule-engine/获取。规则语法创建规则的语法基于计算为True(匹配)或False(不匹配)的逻辑表达式。规则支持一小组数据类型,这些数据类型可以定义为文字或使用应用规则的Python对象进行解析。有关受支持类型的完整列表,请参阅数据类型表。并非所有受支持的操作都适用于下表所示的所有数据类型。规则遵循标准的操作顺序。语法表达式语法支持多种操作,包括数值数据的基本算术和字符串的正则表达式。操作是类型感知的,并且在使用不兼容的类型时会引发异常。支持的操作下表概述了可在规则引擎表达式中使用的所有运算符。算术运算符比较运算符算术比较运算符逻辑运算符按位运算支持浮点值,但如果该值不是自然数,则会引发EvaluationError。算术比较运算符支持多种数据类型,但左值的数据类型必须与右值的数据类型相同。例如,一个STRING可以与另一个STRING进行比较,但不能与FLOAT进行比较。该技术与Python使用的基于字典顺序的序列比较技术相同。使用正则表达式操作时,左侧的表达式是要比较的字符串,右侧的表达式是用于匹配或搜索操作的正则表达式。关于时间DATETIME值DATETIME文字必须以ISO-8601格式指定。底层解析逻辑由dateutil.parser.isoparse()提供。未指定时间的DATETIME值(例如d"2019-09-23")将计算为指定日期的午夜整点的DATETIME。显示等效文字表达式的示例规则:d"2019-09-23"==d"2019-09-2300:00:00"(日期默认为午夜,除非指定时间)安装pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simplerule-engine示例代码示例1,官方示例importrule_engine#matchaliteralfirstnameandapplyingaregextotheemailrule=rule_engine.Rule('first_name=="Luke"andemail=~".*@rebels.org$"')#=>rule.matches({'first_name':'Luke','last_name':'Skywalker','email':'luke@rebels.org'})#=>Truerule.matches({'first_name':'Darth','last_name':'Vader','email':'dvader@empire.net'})#=>False1234567891011示例2,自定义rule=rule_engine.Rule('num>=20000andnum=2000andnum=30000',40],['num>=20000andnum=10000andnum
|
|