我需要将“ prooooooooooooooof”转换为“证明”的正则表达式 为此,我正在使用
import re
i='proooooooooooooooooof'
re.sub(r"(\w)\1*", r'\1',i)
但是只打印“教授”
答案 0 :(得分:1)
在示例数据中使用(\w)\1*
时,每个第一个单词字符将位于第一个捕获组中。以下可能的一系列连续字符将被匹配,而不是替换的一部分。在替换中仅使用\1
将会使用捕获的p
,r
,o
和f
生成prof
您可能要做的是像(\w)\1+
一样重复捕获组1次以上。这样只会捕获第一个捕获组中的第一个o
,因为它应重复1次以上而不是0次以上,并且将与随后的o
匹配,而不是替换的一部分。现在,您可以在替换中使用该捕获组2次,以获得proof
import re
i='proooooooooooooooooof'
print(re.sub(r"(\w)\1+", r'\1\1',i))