我正在尝试使用Python re
模块查找重复出现特定次数的相同字母或数字组。使用 (.)
可以很好地识别将要被重复的内容,但我无法找到如何防止它只重复不同的字符。以下是我的代码:
re.search(r'(.){n}', str)
所以举个例子,如果
n = 4
,它会匹配来自99997
的9999
,但如果n = 3
,则不会匹配。谢谢。
(?:^|(?<=(.)))(?!\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
在匹配后面的问题。上面的正则表达式修复了这个问题。
9
这样的特定字符。 - Etienne Perot