Drools 中的正则表达式

Regular expression in Drools

当我尝试编写我的规则时,我总是遇到编译错误。

我正在尝试将这种情况转化为流口水

if(model.type.series != null && model.type.series.name.mathes(".*FANR.*") || 
                      model.type.series.name.matches(".*SANA.*"))
    //do something....

这就是我的...

rule "Rule 01" salience 0    
    when
            m : model(type.series != null, 
                      type.series.name.matches(".*FANR.*") || 
                      type.series.name.matches(".*SANA.*") 
            a : Result(state == Result.GOOD )   
    then
        a.setState(RESULT.BAD);
          ....
end

我试图做的是使用正则表达式来匹配字符串中 'name' 是 String 类型的部分。由于我是流口水的新手,所以我看不出它会在哪里引起问题,我们将不胜感激

根据 matches 运算符,使用正确的 Drools 语法,如 Drools 手册中所述。

rule FANRorSANA
when
    $n: model($v: type.series.name matches ".*(FANR|SANA).*")
then

并且您可以使用正则表达式的强大功能来测试备选方案。