regex用于重复字符串中的单词以在Python中重新生成一个单词

时间:2016-05-13 07:16:43

标签: python regex python-2.7

如何只用一个副本替换字符串中的重复单词?

例如:

hi hi hello hello hello bye bye bye bye 

应该成为:

hi hello bye 

我的代码:

import re
s = "hi hi hello hello hello bye bye bye bye"
m=re.sub(r'(?<!\S)((\S+)(?:\s+\2))(?:\s+\2)+(?!\S)', r'\2', s)
print m

输出:

hi hi hello bye

1 个答案:

答案 0 :(得分:1)

您可以使用: re.sub(r'\ b(\ S +)(?:\ 1)+ \ b',r'\ 1',s) \ b转义是字间隔(零空格或文本的开头或结尾)的零宽度匹配。使用它可以使模式的其余部分工作,而不会再见再见或foo foobar错误修剪。 模式的内部部分匹配单词,后跟由空格分隔的同一单词的一个或多个重复。整个事情被这个词的一个副本所取代。