一起学RegExp
  • 前言
  • 简介
    • 什么是正则表达式
    • JS常用正则表达式函数
    • 正则可视化工具
  • 语法
    • 构造正则表达式
    • 定位符
    • 普通字符
    • 特殊字符
    • 限定符
    • 分组
    • 运算符优先级
    • 表达式全集
  • 正则分析
  • 常用正则
  • 应用场景
    • path-to-regexp
  • 进阶
    • 正则引擎
    • DFA与NFA
    • 高效正则表达式
Powered by GitBook
On this page

Was this helpful?

  1. 进阶

正则引擎

正则引擎主要分为:

  • 非确定有限状态自动机(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引擎实现正则功能

Previous进阶NextDFA与NFA

Last updated 5 years ago

Was this helpful?