正則表達式裏match和group某用法

今天在用正則時,發現match和group裏面一個很容易疏忽的點。

import re
s= 'this is a number 23564-235-22-423'
r=re.match('.+?(\d+-\d+-\d+-\d+)',s)  #匹配
a=r.group(1)   #提取
print(a)

運行結果:

23564-235-22-423

如果改成:

import re
s= 'this is a number 23564-235-22-423'
r=re.match('.+(\d+-\d+-\d+-\d+)',s)  #匹配
a=r.group(1)   #提取
print(a)

運行結果:

4-235-22-423

因爲

.+ 是匹配任意多個字符,再加?是非貪婪格式,所以第一段程序裏面.+?是非貪婪模式,只匹配了this is a number,使
(\d+-\d+-\d+-\d+)得到了滿足匹配形式的最多數字;第二段程序.+是貪婪模式,匹配了this is a number 2356,只讓(\d+-\d+-\d+-\d+)得到了滿足匹配形式的最少數字
如果group()內不填數字,則爲所有字符:

import re
s= 'this is a number 23564-235-22-423'
r=re.match('.+(\d+-\d+-\d+-\d+)',s)  #匹配
a=r.group()   #提取

print(a)

this is a number 23564-235-22-423

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章