为什么'1 {0}'正则表达式始终与空字符串匹配?

时间:2014-01-02 20:12:37

标签: python regex

import re

if re.match(r'1{0}', 'foo').group() == '':
   print(True)

有人可以解释为什么总是满足这个条件吗?

第一个角色可以是: 1{0}2{0}a{0}

为什么:

re.match(r'11{0}', 'foo').group()
# AttributeError: 'NoneType' object has no attribute 'group

2 个答案:

答案 0 :(得分:4)

来自documentation

{m}
     

指定应匹配先前RE的完全m个副本;较少的匹配导致整个RE不匹配。例如,a{6}将恰好匹配六个'a'个字符,但不会匹配五个。

因此,1{0}将完全匹配字符1的零重复。这与空的正则表达式相同,并且可以匹配任何内容。

答案 1 :(得分:3)

因为{0}告诉它匹配0次重复。 0次重复是一个空字符串。空字符串始终匹配。