为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式删除重复的字符和组合

正则表达式删除重复的字符和组合

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 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信