我正在尝试使用python re
来查找重复特定次数的相同字母或数字的集合。 (.)
可以很好地识别将要重复的内容,但我找不到如何防止重复不同的字符。这就是我所拥有的:
re.search(r'(.){n}', str)
例如,如果9999
,则99997
与n = 4
匹配,但n = 3
则不匹配。{
感谢
答案 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
。上面的正则表达式解决了这个问题。