正则表达式 非贪婪模式,python 贪婪模式
大家好,我是皮皮。
1.导读前几天Python最强王者交流群里一个叫【杰】的粉丝问了一个关于Python正则表达式的问题,涉及到Python正则表达式中的贪婪模式和非贪婪模式。讨论非常热烈。在这里,分享给大家,一起学习。
二、求解过程在这里,分享一下大哥【小王】的回答。让我们看一看。这是他给出的一个示例代码。
进口re
txt=这是一个HTML标签:head HEADER /head。它意味着整个HTML文档的头部。
模式1=重新编译(r 。* )
模式2=重新编译(r 。*? )
result1=re.findall(pattern1,txt)
result2=re.findall(pattern2,txt)
打印(结果1)
打印输出结果(result2)如下图所示:
对输出的分析如下:
我想匹配HTML标签中的数据,也就是它们之间的数据。
模式1=重新编译(r 。* )
模式2=重新编译(r 。*? )两者只有一个区别?但差别很大。分析如下图所示:
到什么时候才会停止?
贪婪的模式就是这样匹配的。非贪婪模式呢?
小彩蛋分享一个【小王】大哥的代码,效果是把正则匹配结果写成命名组Python代码。
大致写法如下:
进口re
txt=这是一个HTML标签:head HEADER /head。它意味着整个HTML文档的头部。
tag=re.compile(r ([A-Za-z0-9])。*?/\1 .*)
Print(re.findall(tag,txt))被写成一个命名分组,如下所示:
txt=这是一个HTML标签:head HEADER /head。它意味着整个HTML文档的头部。
tag=re.compile(r (?P tag_mark [A-Za-z0-9])。*?/(?P=tag_mark)。*)
Print(re.findall(tag,txt))摘要大家好,我是皮皮。本文以粉丝提问为基础,针对Python正则表达式中的贪婪和非贪婪模式,给出了具体的讲解和演示,成功帮助粉丝解决了问题。
最后感谢粉丝[杰]的提问,大哥[小王]的回答和举例,大哥[(这是月球背面)],[dcpeng],[Chlo p.]等人参与学习交流。
小伙伴们,赶紧练起来吧!如果你在学习过程中遇到了什么问题,请加我为好友,我会拉你进Python学习交流群,一起讨论学习。
原创作品来自的Python高级博主,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。