笔记-正则表达式的2种引擎

正则表达式的引擎分为2种,一种是DFA引擎,一种是NFA引擎。

DFA引擎是文本主导的,对于要匹配的文本,记录2个pointer,一个是文本当前匹配的位置,另一个记录正则表达式中的匹配位置,这可能有好几个位置

NFA引擎是正则表达式主导的,也记录2个pointer,一个是文本当前匹配的位置,另一个记录正则表达式中的匹配位置,这只有一个。当当前路径无法匹配时,通过保存的备份记录和回溯来继续进行匹配

优劣:

1,DFA引擎需要的编译时间比NFA长

2。DFA引擎运行的时间比NFA短,对于每个文本,DFA只需要匹配一次,没有回溯

3。NFA提供更多可以控制的结构,比如,环视,固化分组,忽略优先,获取匹配的文本等,匹配同样文本的NFA正则表示式运行效率有很大差别,但是匹配同样文本的DFA正则表达式则差别不大。

相关推荐