zoukankan      html  css  js  c++  java
  • [Regular] 3、正则表达式引擎的构造

    正则引擎一般分为:DFA 引擎和传统NFA引擎. 一般支持忽略优量词就是传统NFA引擎,否则就是DFA或其他引擎.

    顾名思义,既然是引擎肯定会有多种零件构成,要真正了解引擎的工作原理, 还就必须先了解其零件.

    正则引擎的零件分为文字字符、量词、字符组、括号等等。

    文字文本 (如: a、\*、!、好)

      如果一个正则表达式只包含纯文本字符,如abeen 正则引擎会将其视为:一个a,接着一个b,接着一个e,接着一个e,接着一个n. 这应该不难理解。呵呵

    字符组[…]、点号.、Unicode属性及其他

      需要说明的一点就是无论字符组的长度是多少,它都只能匹配一个字符。

    捕获型括号()

      用于捕获文本的括号(而不是用于分组的括号)不会影响匹配的过程。

    锚点

      锚点可以分为:简单锚点和复杂锚点。

      简单锚点只是检查目标字符中的特定位置(如^,$),或者是比较两个相邻字符(如\<,\b)。

      复杂锚点(环视) 能包含任意复杂的子表达式。

    非“电动”的括号、反向引用和忽略优先量词

      捕获括号、以用相应的反向引用和表示法(如$1或\1)、忽略优先量词只对NFA引擎起作用,DFA不支持。

  • 相关阅读:
    后缀自动机学习小记
    [bzoj4524] [loj#2047] [Cqoi2016] 伪光滑数
    [bzoj4825] [loj#2018] [Hnoi2017] 单旋
    [bzoj4571] [loj#2016] [Scoi2016] 美味
    [bzoj4569] [loj#2014] [Scoi2016] 萌萌哒
    [bzoj4568] [loj#2013] [Scoi2016] 幸运数字
    [bzoj4567] [loj#2012] [SCOI2016] 背单词
    deque双向队列
    STL_vector
    qsort与sort()
  • 原文地址:https://www.cnblogs.com/abeen/p/1495799.html
Copyright © 2011-2022 走看看