13-用花括号匹配特定次数
7.3.6 用花括号匹配特定次数
如果想要一个分组重复特定次数,就在正则表达式中该分组的后面跟上花括号包围的数字。例如,正则表达式 (Ha){3}
将匹配字符串 'HaHaHa'
,但不会匹配 'HaHa'
,因为后者只重复了 (Ha)
分组两次。
除了一个数字,还可以指定一个范围,即在花括号中写下一个最小值、一个逗号和一个最大值。例如,正则表达式 (Ha){3,5}
将匹配 'HaHaHa'
、 'HaHaHaHa'
和 'HaHaHaHaHa'
。
也可以不写花括号中的第一个或第二个数字,表示不限定最小值或最大值。例如, (Ha){3,}
将匹配3次或更多次实例, (Ha){,5}
将匹配0~5次实例。花括号让正则表达式更简短。这两个正则表达式匹配同样的模式:
(Ha){3}
(Ha)(Ha)(Ha)
这两个正则表达式也匹配同样的模式:
(Ha){3,5}
((Ha)(Ha)(Ha))|((Ha)(Ha)(Ha)(Ha))|((Ha)(Ha)(Ha)(Ha)(Ha))
在交互式环境中输入以下代码:
>>> haRegex = re.compile(r'(Ha){3}')
>>> mo1 = haRegex.search('HaHaHa')
>>> mo1.group()
'HaHaHa'
>>> mo2 = haRegex.search('Ha')
>>> mo2 == None
True
这里, (Ha){3}
匹配 'HaHaHa'
,但不匹配 'Ha'
。因为它不匹配 'Ha'
,所以 search()
返回 None
。