3.贪婪模式与非贪婪模式

正常情况下,我们的正则匹配会找到尽量多的字符,如果在指令后面加上 ? 则可以关闭这种"贪婪"的行为。

贪婪模式(consume)

# ab+会匹配a开头后面有1个或多个b的字符
# 正常情况下它会尽可能多地去匹配,这这里它把所有的b都匹配出来

import re

# 文本
text = 'abbbbb'

# 匹配规则
pattern = 'ab+'

print(re.findall(pattern,text))

for i in re.finditer(pattern,text):
    print(i)

>>> 
['abbbbb']
<_sre.SRE_Match object; span=(0, 6), match='abbbbb'>

非贪婪模式

# 加上?之后,关闭了"贪婪"模式
# 表达式会尽量少的去匹配,这里只匹配a后面的1个b

import re

# 文本
text = 'abbbbb'

# 匹配规则
pattern = 'ab+?'

print(re.findall(pattern,text))

for i in re.finditer(pattern,text):
    print(i)

>>> 
['ab']
<_sre.SRE_Match object; span=(0, 2), match='ab'>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,272评论 19 139
  • 揭开正则表达式的神秘面纱(转) 关闭高亮 [原创文章,转载请保留或注明出处:http://www.regexlab...
    螃蟹六步郎阅读 2,755评论 0 0
  • 二、总捕衙门 程孤帆只觉前胸、后背、左肋三处伤口如火灼蛇噬,热辣辣直钻到心里。除伤口外,全身若被冰水,已冻得麻木不...
    德万托阿阅读 4,023评论 0 5
  • 今天在看到一篇推文里的心理测试,大概在十年前我曾经做过一次,但今天再做一次的时候,发现,自己已经真真切切变了很多,...
    糖糖唐小丁阅读 6,789评论 5 2
  • 撞克,通俗的讲就是鬼上身,估计大家都有听说过,但亲眼见过的不多,我说的这个呢,是我关于我媳妇儿姥姥的事情,这老太太...
    琦哥的事阅读 5,282评论 4 3

友情链接更多精彩内容