当前位置:嗨网首页>书籍在线阅读

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