python正则表达式可更正以下代码

时间:2018-10-18 19:45:46

标签: regex python-3.x

我需要将“ prooooooooooooooof”转换为“证明”的正则表达式 为此,我正在使用

import re
i='proooooooooooooooooof'
re.sub(r"(\w)\1*", r'\1',i)

但是只打印“教授”

1 个答案:

答案 0 :(得分:1)

在示例数据中使用(\w)\1*时,每个第一个单词字符将位于第一个捕获组中。以下可能的一系列连续字符将被匹配,而不是替换的一部分。在替换中仅使用\1将会使用捕获的prof生成prof

您可能要做的是像(\w)\1+一样重复捕获组1次以上。这样只会捕获第一个捕获组中的第一个o,因为它应重复1次以上而不是0次以上,并且将与随后的o匹配,而不是替换的一部分。现在,您可以在替换中使用该捕获组2次,以获得proof

Regex demo | Python demo

import re
i='proooooooooooooooooof'
print(re.sub(r"(\w)\1+", r'\1\1',i))