duc*_*ayr 7 python regex replace python-2.7
假设我有一个字符串,例如
'I hate *some* kinds of duplicate. This string has a duplicate phrase, duplicate phrase.'
Run Code Online (Sandbox Code Playgroud)
我想删除第二次出现的 ,duplicate phrase而不删除其组成部分的其他出现,例如duplicate.
此外,我需要删除所有 潜在的重复短语,而不仅仅是我事先知道的某些特定短语的重复项。
我发现了几篇关于类似问题的帖子,但没有一个能帮助我解决我的特定问题:
我曾希望根据re.sub(r'\b(.+)(\s+\1\b)+', r'\1', s)我的目的调整最后一个链接 ( ) 中的方法,但无法弄清楚如何做到这一点。
如何从 Python 中的字符串中删除两个或多个单词的所有任意重复短语?
感谢大家的尝试和评论。我终于找到了解决方案:
s = 'I hate *some* kinds of duplicate. This string has a duplicate phrase, duplicate phrase.'
re.sub(r'((\b\w+\b.{1,2}\w+\b)+).+\1', r'\1', s, flags = re.I)
# 'I hate *some* kinds of duplicate. This string has a duplicate phrase.'
Run Code Online (Sandbox Code Playgroud)
正则表达式
r'((\b\w+\b.{1,2}\w+\b)+).+\1'
Run Code Online (Sandbox Code Playgroud)
查找由一个或两个 [任何字符] 分隔的多次运行的字母数字字符的每次出现(以涵盖单词不仅由空格分隔,而且可能由句点或逗号和空格分隔的情况),然后在某些运行后重复长度不确定的[任何字符]。然后
re.sub(r'((\b\w+\b.{1,2}\w+\b)+).+\1', r'\1', s, flags = re.I)
Run Code Online (Sandbox Code Playgroud)
将此类事件替换为由一个或两个 [任何字符] 分隔的第一组字母数字字符,并确保忽略大小写(因为重复的短语有时可能出现在句子的开头)。
| 归档时间: |
|
| 查看次数: |
1853 次 |
| 最近记录: |