2016-05-13 9 views
0

文字列内の繰り返し単語を1つのコピーで置き換えるにはどうすればよいですか?例えばPythonでrepalceする文字列の単語を繰り返す正規表現

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

あなたは使用することができます。

re.sub(r'\b(\S+)(?: \1)+\b', r'\1', s) 

\bエスケープは、単語の区切り(空白またはテキストの開始または終了のどちらか)のためのゼロ幅のマッチです。それを使用すると、goodbye byefoo foobarのようなものが間違ってトリミングされることなく、パターンの残りの部分が動作します。

パターンの内側部分は、スペースで区切られた同じ単語の1つ以上の繰り返しが後に続く単語にマッチします。すべてが単語の1つのコピーに置き換えられます。

+0

ありがとうございました:) @Blckknght – Sanoop

関連する問題