贪婪模式、懒惰模式、独占模式一网打尽,分享一个正则回溯分析工具

昨天,群里一位网友在学习正则表达式。提到了正则表达式三种模式:贪婪模式、懒惰模式、独占模式。然后大家就一起讨论起来了,一发不可收拾。


最后大家总结出了一个表格,如下所示:


640?wx_fmt=png

根据这个表格,我们就能够判断出你写的正则表达式效率到底高不高。这样一来贪婪模式、懒惰模式、独占模式就非常的好判断了。


另外,通过官方文档对比我们可以看出规律:


  • 贪婪模式即在X字符后面增加限定符号如:、*、+、{n}、{n,}、{n,m}

  • 懒惰模式是在带有限定符号:?、*、+、{n}、{n,}、{n,m}的后面,增加”?”,如:X??

  • 独占模式也叫侵占模式,是在带有限定符号:?、*、+、{n}、{n,}、{n,m}的后面,增加”+”,如:X?+


下面看一个贪婪模式的例子:


640?wx_fmt=png

Reluctant 懒惰模式,demo 如下:


640?wx_fmt=png

Possessive 独占模式。

640?wx_fmt=png

3个模式的代码虽然很简单,但是,群里又有“懒货“提出了新要求了。能不能写一个工具来分析。这样我就不用死记硬背了。


640?wx_fmt=png


这个想法很好。而且,根据我们上面的表格,你都可以自己手动写一个正则回溯分析工具了。原理很简单,你就对正则表达式判断是否独占、懒惰、贪婪的特征。如果存在其中的一个特征,就是这个特征的所在的模式了。


根据这个思路,我相信你是可以写出这样的程序的。当然,如果不会也没关系。我给你推荐一个工具,regexbuddy。这个工具长的是下面这样:


640?wx_fmt=png


该工具支持多种程序语言正则表达式,如:perl,pcre,javascript,python,ruby,c#,java等等,还能自动生成程序代码,并且内部带有大量的常用正则表达式。


640?wx_fmt=png


用起来很简单,也很爽,一直用一直爽!


640?wx_fmt=png


需要这个工具的可以自己百度下载,也或者加我微信:xttblog。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

业余草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值