1

私は jess ルール エンジンを使用しており、部分文字列の一致を実現したいと考えています。具体的には、deftemplate person があり、ルールの左手で person スロットの値をチェックします。

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

上記のコードは、文字列全体が「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 に答える