正则引擎
正则引擎主要分为:
非确定有限状态自动机(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
Was this helpful?