Python正则表达式搜索:重复数字n次

时间:2017-02-07 18:27:19

标签: python regex python-3.x

我不明白为什么这不会为重复数字返回匹配项:

import re
digits = '122223456789'
re.search(r'(\d)\4', digits)

相反,我得到"错误:位置4和#34;

的无效组引用

1 个答案:

答案 0 :(得分:5)

因为\4是python-regex引擎中的组引用。如果要指定重复,则应使用{}

re.search(r'(\d){4}', digits)

或者如果你想匹配4个重复的数字,你需要用\1来引用它,因为(\ d)是第一个被捕获的组。

re.search(r'(\d)\1{3}', digits)

演示:

In [5]: re.search(r'(\d)\1{3}', digits).group(0)
Out[5]: '2222'

您可以将组号传递给group()函数的search()属性,以便通过特定组获取匹配字符串的结果。或者只是传递0以获得整个匹配。