正则引擎
正则引擎主要分为:
非确定有限状态自动机(NFA)
确定有限状态自动机(DFA)
DFA和NFA都发展了都多年,产生了许多不必要的变体。POSIX标准(UNIX系统的一个设计标准)出台后,POSIX标准清楚地规定了引擎中应该支持的元字符和特性,DFA已经符合新的标准,但是NFA风格的结果却与此不一,所以NFA需要修改才能符合标准。这样一来,正则引擎可以粗略地分为三类:DFA;传统型NFA;POSIX NFA,具体见下表:
引擎类型 | 程序 |
DFA | awk(大多数版本) egrep(大多数版本) flex、lex、MySql、Procmail |
传统型NFA | Java、Js、Php、Go、Python、Ruby Perl、less、sed、vi、grep |
POSIX NAF | mawk Mortice Kern Systems’ utilities GNU Emacs(使用时可以明确指定) |
可见传统NFA使用最为广泛,大多数编程语言都内置NFA引擎实现正则功能
Last updated