前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >贪婪模式、懒惰模式、独占模式一网打尽,分享一个正则回溯分析工具

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

作者头像
业余草
发布2019-10-25 09:28:08
1.8K0
发布2019-10-25 09:28:08
举报
文章被收录于专栏:业余草

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/xmt1139057136/article/details/93688232

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

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

640?wx_fmt=png
640?wx_fmt=png

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

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

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

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

640?wx_fmt=png
640?wx_fmt=png

Reluctant 懒惰模式,demo 如下:

640?wx_fmt=png
640?wx_fmt=png

Possessive 独占模式。

640?wx_fmt=png
640?wx_fmt=png

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

640?wx_fmt=png
640?wx_fmt=png

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

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

640?wx_fmt=png
640?wx_fmt=png

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

640?wx_fmt=png
640?wx_fmt=png

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

640?wx_fmt=png
640?wx_fmt=png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/06/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档