贪婪匹配与懒惰匹配"/>
正则表达式——贪婪匹配与懒惰匹配
正则表达式之—— 贪婪匹配与懒惰匹配
在学习之前,需要熟悉一下基本操作符的含义:
. 表示换行外任意字符,
+ 表示重复前一个数一次或多次。
先举个栗子(匹配一个字符串):
import re
res = "aabab"
r1 = re.findall('a.*b',res)#findall()返回列表类型
r2 = re.findall('a.*?b',res)
print(r1,r2)
匹配类型 | 操作 | 结果 | 操作的翻译 |
---|---|---|---|
贪婪匹配 | a.*b | [ aabab] | 匹配一个最长的字符串,从a开始,以b结束 |
懒惰匹配 | a.*?b | [aab]和[ab] | 匹配一个最短的字符串,从a开始,以b结束 |
那么对于匹配有数字的字符串又有什么区别呢,这里依旧给出一个栗子。
import re
res = "aabab 123"
r1 = re.findall('.*(\d+)',res)#findall()返回列表类型
r2 = re.findall('.*?(\d+)',res)
print(r1,r2)
r1的结果是[‘3’]
r2的结果是[‘123’]
他们之间的差异也就只在一个问号,输出来的结果却不一样,原因如下:
贪婪匹配直接就从开始匹配到了2,即aabab12,剩了一个3满足\d+,于是结果为3,而懒惰匹配,只是匹配最短的字符,即到了空格就结束,因为123恰好满足\d+,于是结果就为123。
好了文章已经差不多了,谢谢观看,如有错误请指证!
更多推荐
正则表达式——贪婪匹配与懒惰匹配
发布评论