使用python中的正则表达式删除连续的单独单词序列

时间:2017-11-02 16:29:06

标签: regex python-3.x

我想摆脱文本字符串中重复的单词序列,所以我在Python中想出了这个正则表达式解决方案:

e = re.compile(r'(\w.+)(?=\1)',flags=re.DOTALL)

所以当:

text = 'Cats get wet in get wet in the rain'

结果似乎没问题:

re.sub(e,'', text)
  

'猫在雨中被淋湿'

但是如果

text = 'Rococo was replaced by the Neoclassic style.'
re.sub(e,'', text)

我得到了

  

' Roco被新古典主义风格所取代。'

这不好,因为"洛可可"已改为" Roco"。

所以我改变了正则表达式,以便只匹配连续重复的不同单词(用空格分隔):

e = re.compile(r'(\w.+ )(?=\1)',flags=re.DOTALL)

所以我得到了两个

text = 'Cats get wet in get wet in the rain'

re.sub(e,'', text)
  

'猫在雨中被淋湿'

text = 'Rococo was replaced by the Neoclassic style.'

re.sub(e,'', text)
  

'洛可可被新古典风格所取代。'

很好,似乎是我想要的正则表达式。但是我也有一些奇怪的行为:

让我们这样说:

text = 'Escobar bar established'

re.sub(e,'', text)
  

' Escobar成立了'

这个词" bar"在结果中缺少完全没有意图。

现在的问题是:

使用Python我想做什么是正确的解决方案,这意味着连续删除重复的单独单词序列,同时保持句子的其他部分安全无虞?

非常感谢你的帮助。

0 个答案:

没有答案