[Regular] 3、正则表达式引擎的构造

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

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

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

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

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

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

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

捕获型括号()

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

锚点

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

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

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

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

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

 

posted @ 2009-06-04 00:57  ABeen  阅读(464)  评论(0编辑  收藏  举报