我觉得我很难很好地解释这一点,以使搜索引擎能够找到我正在寻找的东西。行为本质上是这样的:
string = “aaaaaaaaare yooooooooou okkkkkkk”
将变为“aare youou okk”,任何给定字符的最大重复次数为两次。
匹配多余的重复项,然后 re.sub 对我来说似乎是采取的方法,但我无法弄清楚我需要的正则表达式语句。
我觉得唯一值得发布的尝试是 - (\w)\1{3,0}
仅匹配重复三遍以上的字符的第一个实例 - 所以只有一个匹配,以及整个重复字符块,而不仅仅是超过最大值 2 的字符。
任何帮助表示赞赏!
正则表达式应该(\w)\1{2,}匹配一个字符,然后至少重复 2 次。当您包含初始字符时,这是 3 或更多。
(\w)\1{2,}
然后替换是\1\1仅用两次重复替换。
\1\1
string = "aaaaaaaaare yooooooooou okkkkkk" new_string = re.sub(r'(\w)\1{2,}', r'\1\1', string)