亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式刪除重復的字符和組合

正則表達式刪除重復的字符和組合

MYYA 2023-05-23 10:34:16
我有一個字符串,其中包含在其末尾具有重復字符的單詞。這些字符可能是這樣的組合:單詞xxxx字xyxyxywordxyzxyzxyz例如:string = "Thisssssssss isisis echooooooo stringggg。替換符號 sss 的重復組 sss"我找到了一種方法來替換一些重復的組合,這樣:re.sub(r'([a-z]{1,3})\1+', r'\1', string)我得到這些結果:這是 echooo stringg。替換重復的符號組我應該如何更改正則表達式以刪除所有重復的字符及其組合?
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

您的正則表達式幾乎是正確的。

  • 您需要添加?到捕獲組中,以便它盡可能少地匹配(“惰性匹配”而不是盡可能多地匹配的默認“貪婪”行為)。

  • 我還使用了+instead of{1,3}因為限制重復似乎是3任意的。

  • 您可以觀察兩種行為之間的區別:貪婪與懶惰。注意:

  1. 貪婪的行為被視為aaaaaa * 2不是a * 4

  2. 貪心行為僅適用于偶數長度的重復。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


查看完整回答
反對 回復 2023-05-23
?
qq_花開花謝_0

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


查看完整回答
反對 回復 2023-05-23
  • 2 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號