2 回答
TA贡献1824条经验 获得超8个赞
您的正则表达式几乎是正确的。
您需要添加
?
到捕获组中,以便它尽可能少地匹配(“惰性匹配”而不是尽可能多地匹配的默认“贪婪”行为)。我还使用了
+
instead of{1,3}
因为限制重复似乎是3
任意的。您可以观察两种行为之间的区别:贪婪与懒惰。注意:
贪婪的行为被视为
aaaa
而aa * 2
不是a * 4
贪心行为仅适用于偶数长度的重复。
aaaaa
被视为aa * 2 + a
因此替换结果将是aaa
而不是a
。
for word in "Thisssssssss isisisis echooooooo stringggg. Replaceaceaceace repeatedededed groupssss of symbolssss".split():
print(re.sub(r'([a-z]+?)\1+', r'\1', word))
产出
This
is
echo
string.
Replace
repeated
groups
of
symbols
TA贡献1835条经验 获得超7个赞
一个班轮解决方案
string = "Thisssssssss isisisis echooooooo stringggg. Replaceaceaceace repeatedededed groupssss of symbolssss"
print(re.sub(r'([a-z]+?)\1+', r'\1', string))
#This is echo string. Replace repeated groups of symbols
添加回答
举报