正则表达式中的贪婪匹配——python学习笔记

贪婪匹配

1.1 概念

正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。举例如下,匹配出数字后面的0;以下例子是用python写的,但是贪婪匹配的概念在其他语言中是一致的。

import re

result = re.match(r'^(\d+)(0*)$', '102300').groups()
('102300', '')

print(result)

#result
#('102300', '') 
# 正则表达式中我分了两组,第一组是"\d",第二组是"(0)",返回结果显示"\d"匹配了"102300","0"匹配为空。

由于\d+采用贪婪匹配,直接把后面的0全部匹配了,结果0*只能匹配空字符串了。
这就是正则默认的贪婪匹配。

1.2 解决贪婪匹配

想要让 “\d+” 采用非贪婪匹配(也就是尽可能少匹配),才能把后面的0匹配出来,解决办法是在 “\d+” 加个 “?”,就可以让 “\d+” 采用非贪婪匹配。

import re
result = re.match(r'^(\d+?)(0*)$', '102300').groups()
('102300', '')

print(result)
# 结果
#('1023', '00')

希望能够帮助到大家,有什么问题可以 直接评论即可,我会及时回复的。

猜你喜欢

转载自blog.csdn.net/qq_41800366/article/details/85769184