4

我正在尝试使用 pythonre来查找一组重复特定次数的相同字母或数字。 (.)可以很好地识别将要重复的内容,但我找不到如何防止它只是重复不同的字符。这是我所拥有的:

re.search(r'(.){n}', str)

因此,例如,它将匹配if 9999,但不匹配 if 。 谢谢99997n = 4n = 3

4

1 回答 1

4

怎么样

(?:^|(?<=(.)))(?!\1)(.)\2{n-1}(?!\2)

这将:

  • (?:^|(?<=(.))): 确保:
    • ^: 要么我们在字符串的开头
    • (?<=(.)): 要么我们不在字符串的开头;然后,捕获匹配前的字符并将其保存到\1
  • (?!\1)(.):匹配任何不是的字符\1并将其保存到\2
  • \2{n-1}: 匹配\2n-1 次
  • (?!\2): 确保\2不能匹配期待

(这n-1只是象征性的;显然你想用 n-1 的实际值替换它,而不是用8-1或其他东西)。

重要编辑:正则表达式 ( ) 的先前版本(.)\1{n-1}(?!\1)不起作用,因为它无法解释匹配\1背后的字符匹配。上面的正则表达式解决了这个问题。

于 2012-04-21T05:01:29.427 回答