我不明白为什么这不会为重复数字返回匹配项:
import re
digits = '122223456789'
re.search(r'(\d)\4', digits)
相反,我得到"错误:位置4和#34;
的无效组引用答案 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以获得整个匹配。