正则引擎

正则引擎主要分为:

  • 非确定有限状态自动机(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