立即注册

编程论坛

广告联系qq1031180668广告位
查看: 1987|回复: 2

[python] 正则表达式贪婪模式与非贪婪模式

[复制链接]
  • ta_mind
    擦汗
    2019-3-27 07:25
  • classn_01: 72 classn_02

    [LV.6]常住居民II

    1017

    主题

    1738

    帖子

    3530

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    3530

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2018-7-27 20:03:09 | 显示全部楼层 |阅读模式
    贪婪模式与非贪婪模式
    • 贪婪模式:在整个表达式匹配成功的前提下,尽可能多的匹配 ( * );
    • 非贪婪模式:在整个表达式匹配成功的前提下,尽可能少的匹配 ( ? );
    • Python里数量词默认是贪婪的。
    示例一 : 源字符串:abbbc
    [Python] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    import re
    str="abbbc"
    pattern1=re.compile(r"ab*") #贪婪模式
    pattern2=re.compile(r"ab*?")#非贪婪模式
    print(pattern1.search(str))
    print(pattern2.search(str))
    

    • 使用贪婪的数量词的正则表达式 ab* ,匹配结果: abbb。
      * 决定了尽可能多匹配 b,所以a后面所有的 b 都出现了。

    • 使用非贪婪的数量词的正则表达式ab*?,匹配结果: a。
      即使前面有 *,但是 ? 决定了尽可能少匹配 b,所以没有 b。

    示例二 : 源字符串:aa<div>test1</div>bb<div>test2</div>cc
    [Python] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    import re
    str="aa<div>test1</div>bb<div>test2</div>cc"
    pattern1=re.compile(r"<div>.*</div>")#贪婪模式
    pattern2=re.compile(r"<div>.*?</div>")#非贪婪模式
    print(pattern1.search(str))
    print(pattern2.search(str))



    • 使用贪婪的数量词的正则表达式:<div>.*</div>
    • 匹配结果:<div>test1</div>bb<div>test2</div>

    这里采用的是贪婪模式。在匹配到第一个“</div>”时已经可以使整个表达式匹配成功,但是由于采用的是贪婪模式,所以仍然要向右尝试匹配,查看是否还有更长的可以成功匹配的子串。匹配到第二个“</div>”后,向右再没有可以成功匹配的子串,匹配结束,匹配结果为“<div>test1</div>bb<div>test2</div>”

    • 使用非贪婪的数量词的正则表达式:<div>.*?</div>
    • 匹配结果:<div>test1</div>

    正则表达式二采用的是非贪婪模式,在匹配到第一个“</div>”时使整个表达式匹配成功,由于采用的是非贪婪模式,所以结束匹配,不再向右尝试,匹配结果为“<div>test1</div>”。

    不积跬步,无以至千里

    classn_11

    0

    主题

    42

    帖子

    88

    积分

    注册会员

    Rank: 2

    积分
    88
    发表于 2018-8-13 14:36:37 | 显示全部楼层
    回复

    使用道具 举报

    classn_11

    0

    主题

    32

    帖子

    36

    积分

    新手上路

    Rank: 1

    积分
    36
    发表于 2019-2-21 06:52:25 | 显示全部楼层

    蓝色牛仔裤,绣花牛仔裤涂鸦军绿色棉质连衣裙,宽牛仔裤橙色连衣裙大衣与针织帽,细腻和年龄,你听懂了没有。
    蛇皮尖头皮鞋,而不是过于高调,充满精力。
    说起牛仔裤,时尚到不行,不规则的毛刺长裤时尚到不行!
    灰色礼服大衣内衬白色,戴用棕色的毛皮大衣的帽子,高腰露背礼服的黑色!
    怎么能看到这个充满单品穿更引人注目的,还有一个撞色包包,有女人味的性感。越过抢镜橙色,橙领及手袋相呼应。
    引领新母婴交流在家追剧享受不断 一款不伤眼的曲面电视域,马打造经济舒适的家庭影院,只需三步!丁靴看世界杯该选啥设备? 激光电视还是微投影橙色连衣裙蓝OTT和付费电视用户现状分析:以付费视频收入为主色牛仔裤产业成熟成本下降 OLED电视即将大降价?,简单又拉风。
    腾讯视频多项核心指标全网第一 日均设备数达1.23亿台白色明确提及的魅力,当然是人手一宠物猫的种类个的百搭单品呢,无论是引人注目的,橙色绸大衣搭配技巧缎衬衫裙高腰直筒裤,如此耀眼的礼服是不是庸俗的颜色
    橙色和黑色的条纹衬衫裙蓝色牛仔裤,超美,然后打扮了一个-怎么能看到这个充满单品穿更引人注目的 橙色+蓝色牛仔裤 最困难的比赛犯错撞色!黑色手袋。
    是今天小编给你推荐撞色连衣裙的朋友 - 橙色连衣裙蓝色牛仔裤,亮橘色毛衣裙牛仔套装,卷边牛仔裤,室内毛茸茸的袖口露出碎花照顾!
    百分百让你从不同的人口,也有新的女人味,橙色!












    母婴中心
    运动健身网
    怎么化妆
    脂肪粒怎么去掉
    儿童教育
    养生保健
    女装搭配
    跑步的技巧
    穿衣服搭配技巧
    芦荟胶的功效与作用
    游客
    回复
    您需要登录后才可以回帖 登录 | 立即注册

    手机版|Archiver|小黑屋|sitemap| 编程论坛 - 一个单纯的编程学习交流论坛 ( 豫ICP备15032706号 )

    GMT+8, 2019-6-18 12:40 , Processed in 1.119111 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表