美文网首页
正则表达式还有一些细节

正则表达式还有一些细节

作者: 灯不梨喵 | 来源:发表于2017-11-22 12:06 被阅读0次

1.关于\b的概念,详细分析

2.零宽断言(也叫环视、预搜索等)

3.正则引擎:

最近在看《精通正则表达式》(虽然这本书并没有提到js,然后译者自己出了本差不多的书把js写进去了)(在图书馆的我一脸蒙蔽还是借了这本)(还是想问作者为什么要用车做比喻,我好好的学习编程之前还得去学个车不成??)

这本书有提到正则引擎,原来正则引擎有几种那么多,基于不同的引擎,构建正则表达式的方式决定了某个正则表达式能否匹配一个特定字符串,在何处匹配,以及匹配成功或报告失败的速度

正则引擎主要有:DFA(确定型有穷自动机),传统型NFA(非确定型有穷自动机),POSIX NFA(可以看作是比较厉害的升级版加速NFA)。

那书上也没写js,怎么js是什么引擎嘞。测一测嘛。

console.log("nfa not".match(/nfa|nfa not/)); //nfa

好了嘛,是nfa,那是哪个nfa呢

console.time('/X(.+)+X/ test');

"==XX=============================".match(/X(.+)+X/);

console.timeEnd('/X(.+)+X/ test');  // /X(.+)+X/ test: 25191.253ms

时间挺长的哈,应该是传统型NFA了。

NFA是表达式主导引擎,每一个子表达式都是独立的,不存在内在联系。

NFA为什么叫NFA,不确定在哪里?表达式主导,意味着引擎在匹配文本时,都要看看当前文本是否匹配正则表达式的当前部分(如果有子表达式的分支,会检测逐个分支,如果某一分支不匹配,就尝试另一个分支元素)。表达式的控制权在不同的元素之间转换,所以是表达式主导。

如果你了解DFA,就知道它是文本式主导,没有回溯和捕获式分组,这意味着它不需犹豫不决。

而NFA,则是“不到黄河心不死”,直到抵达正则表达式的末尾前,匹配的结果都是不确定的。

既然NFA具备回溯机制,那么我们细细来说,NFA是怎么回溯,回溯到哪里的。

回溯相当于在走一条陌生的路时,边走边做标记。就好像我玩RPG游戏的时候非常怂,总之S\L大法好。在它们正则界官方,这叫做备用状态。

根据《精通正则表达式》这本书的例子,我自己再模仿着画了一次图帮助记忆和理解。

这是?匹配符的例子(字丑,尴尬,数位板最近不好使)

而*号每次测试它作用的元素时之前,引擎都会保存一个状态

+号是匹配第一个元素后再依照*号的类似规则保存状态。

然而这里有一个特殊的例子,正则表达式/[0-9]*/匹配‘abc123456’的时候,会在1之前的位置保存一个备用状态吗?在正则表达式*后面还有别的子表达式的时候,会;如果整个正则表达式由*支配,则不保存。详见书本164页,因为我也不是理解得很透彻。。。

相关文章

  • 正则表达式还有一些细节

    1.关于\b的概念,详细分析 2.零宽断言(也叫环视、预搜索等) 3.正则引擎: 最近在看《精通正则表达式》(虽然...

  • python数据收集工具

    一、正则表达式(略)二、Xpath表达式基础除了正则表达式之外,还有一些非常好用的信息筛选工具,比如XPath表达...

  • 画画打卡第115天

    还有一些小细节要加,估计还得两三天

  • Jmeter必备-正则表达式

    前言: 正则表达式在Jmeter的用处非常广,包括常用的正则表达式提取器,还有其一些函数或者配置元件之类的。 元字...

  • 正则表达式

    正则表达式概述 什么是正则表达式     正则表达式:(Regular Expression),是一些有特殊的字符...

  • 正则表达式基本操作

    正则表达式 1.什么是正则表达式 正则表达式: Regular Expression,是一些由特殊的字符和符号组成...

  • Java正则表达式

    本文主要讲一下什么是正则表达式,正则表达式的一些常用语法,以及我们项目中用到的一些正则表达式. 定义 首先,正则表...

  • 台湾游记3.台湾故宫的设计细节

    台湾的故宫原来不是宫殿,是个博物馆。 对比北京故宫,各种设计细节都更好一些,不受局限。 还有很多细节没拍,比如不同...

  • 常用正则记录

    记录一些常用的正则表达式 ...

  • 让女生变精致的6个小细节

    每个女生都想越变越美,除了化妆之外,还有一些小细节,可以让女生变得更精致。 ✨往往这些小细节的改变,能让我们由内而...

网友评论

      本文标题:正则表达式还有一些细节

      本文链接:https://www.haomeiwen.com/subject/xozpvxtx.html