详解正则表达式的贪婪模式与非贪婪模式

 更新时间:2018年10月08日 08:43:33   作者:wangshuai33  
这篇文章主要介绍了正则表达式的贪婪模式与非贪婪模式,通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

什么是正则表达式的贪婪与非贪婪匹配

  如:String str="abcaxc";

    Patter p="ab*c";

  贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。

  非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。

下面通过实例代码看下正则表达式的贪婪模式与非贪婪模式,具体内容如下所示:

贪婪模式:能匹配的最大部分 

s = "This is a number 234-235-22-4223" 
r = re.match(r"(.+)(\d+-\d+-\d+-\d+",s)
r.groups()
("This is a number 23","4-235-22-4223")

贪婪模式就是“.+”中的+会一直查找到最后一个符合条件的字符,所以上述代码中最前面的两个数字在提取数字是没有被提取到

非贪婪模式:匹配越少越好

s = "This is a number 234-235-22-4223" 
r = re.match(r"(.+?)(\d+-\d+-\d+-\d+",s)
r.groups()
("This is a number ","234-235-22-4223")

非贪婪模式就是在“.+?"会匹配到第一个符合条件的字符就停止

总结

以上所述是小编给大家介绍的正则表达式的贪婪模式与非贪婪模式,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

相关文章

  • 中文正则表达式匹配问题之正则表达式中文匹配使用方法

    中文正则表达式匹配问题之正则表达式中文匹配使用方法

    这篇文章主要介绍了中文正则表达式匹配问题之正则表达式中文匹配使用方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • 正则匹配原理之 逆序环视深入 .

    正则匹配原理之 逆序环视深入 .

    这个问题本身不是本文讨论的重点,本文所要讨论的,主要是由这一问题的解决方案而引出的另一个正则匹配原理问题
    2012-10-10
  • 使用正则表达式生成随机数据的方法

    使用正则表达式生成随机数据的方法

    这篇文章主要介绍了使用正则表达式生成随机数据的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 正则表达式的基本知识

    正则表达式的基本知识

    正则表达式的基本知识...
    2006-12-12
  • 前端正则表达式书写及常用的方法

    前端正则表达式书写及常用的方法

    这篇文章主要介绍了前端正则表达式书写及常用的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • 使用正则表达式判断密码强弱

    使用正则表达式判断密码强弱

    本文给大家分享使用正则表达式来判断密码强弱的实例代码,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-06-06
  • js正则表达式之RegExp对象之compile方法  编译正则表达式

    js正则表达式之RegExp对象之compile方法 编译正则表达式

    该方法可以编译指定的正则表达式,编译之后的正则表达式执行速度将会提高,如果正则表达式多次被调用,那么调用compile方法可以有效的提高代码的执行速度,如果该正则表达式只能被使用一次,则不会有明显的效果
    2012-10-10
  • 浅谈正则速记法的技巧

    浅谈正则速记法的技巧

    这篇文章主要介绍了浅谈正则速记法的技巧,对大部分人来说,正则主要是难记,其实只要对正则符号分类记忆,就会发现核心概念其实特别简单,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • PHP 正则表达式特殊字符 [:alnum:] [:alpha:] 等

    PHP 正则表达式特殊字符 [:alnum:] [:alpha:] 等

    正则表达式中有两个很重要的特殊字符就是"[ ]"。他们可以匹配"[]"之中出现过的字符,比如"/[az]/"可以匹配单个字符"a"或者"z";如果把上面的表达式改成这样"/[a-z]/",就可以匹配任何单个小写字母,比如"a"、"b"等等。
    2011-09-09
  • 在实际例子中学习正则表达式(高效率)

    在实际例子中学习正则表达式(高效率)

    正则表达式,又称正规表示法、常规表示法。下面小编给大家分享几个例子给大家讲下正则表达式知识,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08

最新评论