无意间发现{}写都位置会对结果产生很多影响 ,如下两个正则都group出力看很有意思
p = re.compile('(\d+)-(\d+)-(\d+)')
pr = re.compile(r'(\d){4}-(\d){2}-(\d{2})') #注意{}位置
print('p 1', p.match('2018-01-01'))
print('p 2', p.match('2018-1-01'))
print('pr ', pr.match('2018-01-01'))
以下都出力对比看很有意思{n}写在()内外会对用取得的长度有影响
print('p groups():', p.match('2018-01-01').groups())
print('p group() :', p.match('2018-01-01').group())
print('p group(0):', p.match('2018-01-01').group(0))
print('p group(1):', p.match('2018-01-01').group(1))
print('p group(2):', p.match('2018-01-01').group(2))
print(':***************************')
print('pr groups():', pr.match('2018-01-01').groups())
print('pr group() :', pr.match('2018-01-01').group())
print('pr group(0):', pr.match('2018-01-01').group(0))
print('pr group(1):', pr.match('2018-01-01').group(1))
print('pr group(2):', pr.match('2018-01-01').group(2))
output:----------------------------------
p 1 <_sre.SRE_Match object; span=(0, 10), match='2018-01-01'>
p 2 <_sre.SRE_Match object; span=(0, 9), match='2018-1-01'>
pr <_sre.SRE_Match object; span=(0, 10), match='2018-01-01'>
p groups(): ('2018', '01', '01')
p group() : 2018-01-01
p group(0): 2018-01-01
p group(1): 2018
p group(2): 01
:***************************
pr groups(): ('8', '1', '01') ->{}在()外面只取得一位
pr group(): 2018-01-01
pr group(0): 2018-01-01
pr group(1): 8
pr group(2): 1
展开