1. 程式人生 > >正則表示式中的貪婪匹配——python學習筆記

正則表示式中的貪婪匹配——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')

希望能夠幫助到大家,有什麼問題可以 直接評論即可,我會及時回覆的。