输入驱动DFA(确定性有限自动机)引擎。
该算法扫描输入字符串一次,并记住正则表达式中所有可能匹配的路径。例如,当模式中遇到交替时,将创建两个新路径并独立尝试。如果给定路径不匹配,则将其从可能性集中删除。
匹配时间受输入字符串大小的限制。没有回溯,引擎可以同时找到多个匹配项,甚至是重叠的匹配项。
与NFA引擎类型相比,此方法的主要缺点是减少了引擎可以支持的功能集。
匹配a(b|c)a反对abadaca:
abadaca a(b|c)a ^ ^ Attempt 1 ==> CONTINUE abadaca a(b|c)a ^ ^ Attempt 2 ==> FAIL ^ Attempt 1.1 ==> CONTINUE ^ Attempt 1.2 ==> FAIL abadaca a(b|c)a ^ ^ Attempt 3 ==> CONTINUE ^ Attempt 1.1 ==> MATCH abadaca a(b|c)a ^ ^ Attempt 4 ==> FAIL ^ Attempt 3.1 ==> FAIL ^ Attempt 3.2 ==> FAIL abadaca a(b|c)a ^ ^ Attempt 5 ==> CONTINUE abadaca a(b|c)a ^ ^ Attempt 6 ==> FAIL ^ Attempt 5.1 ==> FAIL ^ Attempt 5.2 ==> CONTINUE abadaca a(b|c)a ^ ^ Attempt 7 ==> CONTINUE ^ Attempt 5.2 ==> MATCH abadaca a(b|c)a ^ ^ Attempt 7.1 ==> FAIL ^ Attempt 7.2 ==> FAIL