問題は非常に単純に聞こえますが、一連のアクションが特定のパターンから逸脱し、これを行うための巧妙な解決策を見つけられない箇所を検出したいと考えています。
パターンの目的は、何らかの形で通常のシーケンスを記述することです。より具体的には、「アクション シーケンスに含めるべきアクションと含めるべきでないアクション、およびその順序は?」次に、アクション シーケンスをパターンと照合し、偏差とその位置を検出します。
私の最初のアプローチは、正規表現でこれを行うことでした。次に例を示します。
Example 1:
Pattern: A.*BC
Sequence: AGDBC (matches)
Sequence: AGEDC (does not match)
Example 2:
Pattern: ABCD
Sequence: ABD (does not match)
Sequence: ABED (does not match)
Sequence: ABCED (does not match)
Example 3:
Pattern: ABCDEF
Sequence: ABXDXF (does not match)
正規表現を使用すると、エラーを検出するのは簡単ですが、どこで発生したかはわかりません。私のアプローチは、シーケンス内のパターンが見つかるまで、最後の正規表現ブロックを連続して削除することでした。それから私は最後の正しい行動を知り、少なくとも最初の逸脱を見つけました. しかし、これは私にとって最善の解決策ではないようです。さらに、私はすべての逸脱をすることはできません。
私の頭の中の他の魂は、ステート マシン、ANTLR のような注文ツールで動作しています。しかし、彼らが私の問題を解決できるかどうかはわかりません。省略や手数料のエラーを検出し、ユーザーが独自のパターンを作成できるようにしたいと考えています。これを行う良い方法を知っていますか?