我想检测一个动作序列偏离给定模式的段落,并且不能找出一个聪明的解决方案来做到这一点,虽然问题听起来很简单。如何从模式中检测序列中的偏差?
该模式的目标是以某种方式描述一个正常的序列。更具体的说:“行动顺序和顺序中应该包含或不应该包含哪些行为?”然后,我想根据模式匹配动作序列并检测偏差及其位置。
我的第一种方法是用正则表达式来做到这一点。这里有一个例子:
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这样的订购工具。但我不知道他们是否能解决我的问题。 我想检测遗漏和佣金错误,并给予用户创建自己的模式的可能性。你知道这样做的好方法吗?