Я хочу обнаружить отрывки, в которых последовательность действий отклоняется от заданного шаблона, и не могу придумать разумного решения для этого, хотя проблема звучит очень просто.
Цель шаблонаэто описать как-то нормальную последовательность.Более конкретно: «Какие действия должны или не должны содержаться в последовательности действий и в каком порядке?»Затем я хочу сопоставить последовательность действий с шаблоном и обнаружить отклонения и их местоположение.
Мой первый подход состоял в том, чтобы сделать это с помощью регулярных выражений.Вот пример:
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.Но я не знаю, смогут ли они решить мою проблему.Я хочу выявлять ошибки упущения и комиссии и дать пользователю возможность создать свой собственный шаблон.Вы знаете хороший способ сделать это?