贪婪匹配
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')
希望能够帮助到大家,有什么问题可以 直接评论即可,我会及时回复的。