正则表达式
文章平均质量分 57
小辣抓
<WEB /> Developer
展开
-
【regex】传统 NFA 正则引擎匹配原理
NFA引擎匹配原理1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为什么要了解引擎匹配原理一个个音符杂乱无章的组合在一起,弹奏出的或许就是噪音,同样的音符经过作曲家的手,就可以谱出非常动听的乐曲,一个演奏者同样可以照着乐谱奏出动听的乐曲,但他/她或许不知道该如何去改变音符...转载 2018-09-25 15:48:52 · 419 阅读 · 0 评论 -
【regex】以大局为重的匹配优先量词
以大局为重的匹配优先量词在正则表达式中有三个匹配优先的量词,分别是*, +, ?。所谓匹配优先,其实就是日常说的贪婪,它们会尽可能的匹配更多的字符,换一种说法,它们一般会匹配大于下限,它们好像一群好久没吃饱饭的穷苦人民,有东西吃,当然要尽可能吃的更多啊!比如说,现在有这样一个字符串 hello man!如果我用 .* 去匹配,得到的将会是 hello man! 整个串。因为 * 是匹配...原创 2018-09-26 12:57:01 · 450 阅读 · 0 评论 -
【regex】忽略优先量词
忽略优先量词正则里的忽略优先量词有 *?,+?,??,也就是匹配优先量词加上一个?,忽略优先也叫做我们平时说的惰性匹配忽略优先量词也是DFA和NFA的分水岭,这个东西是NFA里特有的,DFA里没有的。忽略优先量词与匹配优先量词不同的地方在于,匹配优先量词会首先尝试匹配,而忽略优先量词会先尝试忽略,在保存状态的时候也是不一样的,匹配优先量词因为会先尝试匹配,所以它的备用状态保存在该量词的后面,...原创 2018-09-26 17:20:47 · 565 阅读 · 0 评论 -
【regex】如何判断正则引擎是 DFA 还是 NFA
【regex】如何判断正则引擎是 DFA 还是 NFA一般的正则引擎会分为 NFA, DFA 和 POSIX NFA,为了区分,前者被称作传统 NFA,NFA和DFA经常被类比为烧汽油的汽车和烧电的,烧电的一般看着会高档很多,烧汽油的乍一看会笨重很多,但是笨重,就有丰富的元字符的支持,两者在实现上也各有千秋,下面先看一下如何判断正则引擎是 DFA 还是 NFA。如何判断首先需要明确的是,DF...原创 2018-10-03 23:59:01 · 2124 阅读 · 0 评论 -
【regex】用环视实现固化分组
用环视实现固化分组首先看这篇博文的“老几”应该知道固化分组的概念。但是也有可能是读者冲着环视进来的。所以还是有必要的说一下固化分组的概念。咱知道,NFA 的灵魂是回溯,固化分组也是 NFA 特有的,而固化分组的任务却是让你丢弃前面的备用状态。那固化分组的作用是什么呢?想想你有没有这样的需求,如果你写了这样一个正则[0-3]?\d去匹配“3”这个字符串毫无疑问,3应该是被\d匹配到了,...原创 2018-09-28 00:02:07 · 508 阅读 · 0 评论 -
【regex】字符组
【regex】字符组国庆的第五天,荒废了整整一天了,今天除了长得像个人,其余跟猪没什么区别,想着写点东西,以前说些一篇关于正则表达式的基础知识,但是一直没有时间去写,今天恰好可以写写,其实很多人都知道正则这个东西,而且也仅仅会使用一些基础的元字符,大多是看网上的一些精简教程,简单的介绍了一下,可能晦涩难懂,想着把这些也写出来,看看能不能好理解一些,帮助刚学习正则的(同学!!)能够少走弯路。哈,...原创 2018-10-05 23:07:21 · 324 阅读 · 0 评论