【问题标题】:Python regex search: repeated digit n timesPython正则表达式搜索:重复数字n次
【发布时间】:2017-02-07 18:27:18
【问题描述】:

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

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

相反,我得到“错误:位置 4 的组引用无效”

【问题讨论】:

  • 你的意思是(\d)\1+?
  • re.search(r'((\d)\2+)', digits).group(1) 重复次数未知。 r'\d{4} 如果您专门寻找 4 次重复。

标签: python regex python-3.x


【解决方案1】:

因为\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'

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

【讨论】:

  • 谢谢。我认为(\d)\number 中的\number 是一种匹配特定于该组的重复模式数量的方法。但它就像一个 perl 变量号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 2020-06-07
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多