您当前的位置: 首页 >  爬虫

29 爬虫 - re 正则 贪婪模式与非贪婪模式

杨林伟 发布时间:2019-08-29 17:18:43 ,浏览量:1

贪婪模式: 在整个表达式匹配成功的前提下,尽可能多的匹配 ( * );

非贪婪模式: 在整个表达式匹配成功的前提下,尽可能少的匹配 ( ? );

Python里数量词默认是贪婪的。

示例一 : 源字符串:abbbc

使用贪婪的数量词的正则表达式ab* ,匹配结果: abbb。

决定了尽可能多匹配 b,所以a后面所有的 b 都出现了。

使用非贪婪的数量词的正则表达式ab*?,匹配结果: a。

即使前面有 *,但是 ? 决定了尽可能少匹配 b,所以没有 b。

示例二 : 源字符串
aa
test1
bb
test2
cc

使用贪婪的数量词的正则表达式:

.*
匹配结果:
test1
bb
test2

这里采用的是贪婪模式。在匹配到第一个

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

使用非贪婪的数量词的正则表达式:

.*?
匹配结果:
test1

正则表达式二采用的是非贪婪模式,在匹配到第一个

时使整个表达式匹配成功,由于采用的是非贪婪模式,所以结束匹配,不再向右尝试,匹配结果为
test1

附正则表达式测试网址:http://tool.oschina.net/regex/

关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 1浏览

    0关注

    3183博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.1010s