使用正则表达式将相同的字符与确切的次数匹配

时间:2012-04-21 04:55:16

标签: python regex

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

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

例如,如果9999,则99997n = 4匹配,但n = 3则不匹配。{ 感谢

1 个答案:

答案 0 :(得分:4)

怎么样

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

这将:

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

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

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