回答:
正規表現を使用して、行内の連続する重複する単語を削除できますが、連続していない重複する単語(例:)を削除することはできないと思いますdangerous, hazardous, dangerous
。
この正規表現は、2つの重複した単語でも10の重複した単語でも、すべての連続した重複した単語を削除します \b(\w+)(?:,\s+\1\b)+
。
まったく同じコンマなしの正規表現は次のようになります\b(\w+)(?:\s+\1\b)+
(他のユーザーに役立つ場合があります)
重複する2つの単語(double)のみに正規表現が必要な場合は、次の正規表現を使用します(\b\w+\b)\W+\1
。
この正規表現を[ 置換]ボックスに配置して、単語の1回の出現を維持します(そうしないと、繰り返されるすべての単語が削除されます) ${1}
。
これらの正規表現は、質問として例として説明したような状況を修正します。最初の正規表現は、重複する単語のすべての数(例:)に対して機能しますがdangerous, dangerous, dangerous, dangerous, hazardous
、2番目のバージョンは、重複する単語の2つ(例:)に対してのみ機能しdangerous, dangerous, hazardous
ます。
注:正規表現のみの形式が好きなことを意味し、問題の記述形式に適用されますがtwo words, two words, anotherword
、two-words, two-words, anotherword
、three words expression, three words expression, anotherword
正規表現は、彼らには適用されませんので、変更されません。
(\b\w+\b)\W+\1
2つの重複した単語に対して。回答を編集します。コンマは、他の正規表現が機能しない理由です。
word, word, anotherword
。ただし、came across, came across
3語または4語の場合など、少し異なる多くのインスタンスがあります。また、'
likeの付いた単語もありdon't
、Notepad ++正規表現システムでは事態がさらに複雑になります。Notepad ++正規表現システムはかなり面倒で制限もあるため、解決策はPython(または別の言語)で正規表現を使用するか、Notepad ++の形式固有の正規表現を作成することです。
仕事をする方法は次のとおりです。連続していない場合でも、重複する単語はすべて置き換えられます。
(?:^|\G)(\b\w+\b),?(?=.*\1)
LEAVE EMPTY
. matches newline
説明:
(?:^|\G) : non capture group, beginning of line or position of last match
(\b\w+\b) : group 1, 1 or more word character (ie. [a-zA-Z0-9_]), surrounded by word boundaries
,? : optional comma
(?=.*\1) : positive lookahead, check if thhere is the same word (contained in group 1) somewhere after
次のような入力が与えられた場合:
dangerous,dangerous,hazardous,perilous,dangerous,dangerous,hazardous,perilous
私達は得た:
dangerous,hazardous,perilous
dangerous,hazardous,dangerous,perilous
?言い換えれば、重複した単語は常に隣り合っていますか?