*意味着“匹配零次或多次”,+(加号)则意味着“匹配一次或多次”。星号不要求
分组出现在匹配的字符串中,但加号不同,加号前面的分组必须“至少出现一次”。这不是可选的。在交互式环境中输入以下代码,把它和前一节的星号正则表达式进行比较:
>>> batRegex = re.compile(r'Bat(wo)+man')
>>> mo1 = batRegex.search('The Adventures of Batwoman')
>>> mo1.group()
'Batwoman'
>>> mo2 = batRegex.search('The Adventures of Batwowowowoman')
>>> mo2.group()
'Batwowowowoman'
>>> mo3 = batRegex.search('The Adventures of Batman')
>>> mo3 == None
True
正则表达式 Bat(wo)+man 不会匹配字符串'The Adventures of Batman',因为加号要求 wo 至少出现一次。
如果需要匹配真正的加号字符,在加号前面加上倒斜杠实现转义:\+。