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

本文介绍了正则引擎的基本组成,包括DFA和NFA两种主要类型。详细解释了文字字符、量词、字符组等核心概念,并区分了捕获型括号与非捕获型括号的作用,以及锚点和量词在不同引擎中的表现。

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

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

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

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

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

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

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

捕获型括号()

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

锚点

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

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

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

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值