正则表达式(.*?)(.+?)惰性匹配
看了挺多博客,终于弄懂了,现在整理一下:
. 匹配任意除换行符“\n”外的字符
* 匹配前面的字符0次或多次
+ 匹配前面的字符1次或多次
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符
.* 匹配任意除换行符“\n”外的字符0次或多次
.+ 匹配任意除换行符“\n”外的字符1次或多次
.*? 匹配任意除换行符“\n”外的字符0次或多次,但尽可能少重复
.+? 匹配任意除换行符“\n”外的字符0次或多次,但尽可能少重复
此处?的作用就是指明一个非贪婪限定符,什么叫尽可能少重复?简单点说就是匹配最短的符合要求的表达式,下面举出例子:
re.match(r‘a.*b‘, ‘aababa‘) # 1
re.match(r‘a.*?b‘, ‘aababa‘) # 2
1式没有非贪婪限定符,匹配最长表达式,结果为aabab
2式有非贪婪限定符,尽可能少重复,结果为aab和ab
re.match(r‘a.+?b‘, ‘aababa‘) # 3
同理.+?也一样,只是不包括匹配0次的情况,所以3式结果为aab,再比如:
re.match(r‘hello.*?world‘, ‘xxxhelloworldxxhelloxxworld‘ # 4
4式的结果显而易见:helloworld和helloxxworld
相关推荐
wangzhaotongalex 2020-10-20
rechanel 2020-11-16
cshanzhizi 2020-10-16
luofuIT成长记录 2020-09-22
taomengxing 2020-09-07
MaggieRose 2020-08-19
jyj00 2020-08-15
MaggieRose 2020-07-04
modaiairen 2020-06-28
ziggurat 2020-06-28
JnX 2020-06-27
jyj00 2020-06-26
山水沐光 2020-06-25
shqhope 2020-06-23
eroshn 2020-06-21
码墨 2020-06-16
wyq 2020-11-11
TLROJE 2020-10-26
风雨断肠人 2020-10-13