1

我使用 jess 规则引擎,我想实现子字符串匹配。具体来说,我有一个定义模板的人,我检查规则左侧的人员槽值,例如

(defrule vsvmntud (declare (salience 1)) (person (job unemployed)) =>....

上面的代码将匹配工作与整个字符串“失业”。我想匹配子字符串,例如,如果作业包含子字符串“em”。这可能吗;

4

1 回答 1

1

从 Jess 7 开始,直接支持正则表达式:类似的规则

(defrule vsvmntud
  (person (job /.*em.*/))
   =>
  ...

会将job插槽与 Java 正则表达式匹配.*em.*

您还可以使用 Jess 库中的任何函数——例如

(defrule vsvmntud
  (person (job ?j&:(str-index em ?j)))
   =>
  ...

做同样的事情(如果没有找到匹配项,则函数str-index返回,或者一个数字——当转换为布尔值时被解释为——否则。)FALSETRUE

于 2013-03-12T12:05:38.880 回答