【发布时间】:2018-07-27 09:19:24
【问题描述】:
例如我有一个字符串:
my_str = 'my example example string contains example some text'
我想要做的 - 删除特定单词的所有重复项(仅当它们连续出现时)。结果:
my example string contains example some text
我尝试了下一个代码:
import re
my_str = re.sub(' example +', ' example ', my_str)
或
my_str = re.sub('\[ example ]+', ' example ', my_str)
但它不起作用。
我知道有很多关于 re 的问题,但我仍然无法将它们正确地应用到我的案例中。
【问题讨论】:
-
你能做的最好的事情就是阅读正则表达式教程,基本的东西就足够了。
-
一个需要使用带有动态值的单词边界的问题并不容易通过正则表达式教程来解决。此外,Regular Expression For Consecutive Duplicate Words 不包含 Python 实现,这对于那些不熟悉将原始字符串文字用于正则表达式模式的最佳实践的人来说很棘手。
-
@WiktorStribiżew:解决一般情况确实不是那么容易,但问题是删除一个相对简单的特定重复词:
\bexample(?:\s+example)+\b,然后构建如果考虑到 Python 中广泛使用的众所周知的格式化字符串,它动态地使用捕获组和反向引用几乎是过度设计的。问题是提问者在写一个问题和等待一个主题的答案上花费的时间比阅读关于这个主题的教程要多。此外,他没有进行任何搜索(请参阅两种模式和回避:“我知道有...等等”)。 -
@WiktorStribiżew:也就是说,我的第一条评论与其说是责备不如说是建议。
标签: python regex string python-3.x char