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
添加回答
舉報