Notepad ++を使用してすべての行で重複する単語をすべて削除するにはどうすればよいですか?


11

キーワードを含む行を含むファイルで作業しており、一部の行には重複したキーワードが含まれています。

例えば:

dangerous,dangerous,hazardous,perilous

Notepad ++に、行ごとに重複する単語をすべて削除したいことを伝えたい。この例でdangerous,は削除されます:

dangerous,hazardous,perilous

そのような行がたくさんあるので、これを自動化する方法を探しています。


1
どうdangerous,hazardous,dangerous,perilous?言い換えれば、重複した単語は常に隣り合っていますか?
ダニエルベック

回答:


11

正規表現を使用して、行内の連続する重複する単語を削除できますが、連続していない重複する単語(例:)を削除することはできないと思いますdangerous, hazardous, dangerous

Notepad ++の置換ウィンドウでこの正規表現を使用し、以下の検索モードオプションとして「正規表現」を選択することを忘れないでください。

この正規表現は、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, anotherwordtwo-words, two-words, anotherwordthree words expression, three words expression, anotherword正規表現は、彼らには適用されませんので、変更されません。


助けてくれてありがとう!:あなたが提案し、それが機能しなかったとして、しかし、私は0の出現を取得しています、私は、彼らは、私の画面キャプチャを確認してくださいする前と何もあったように私も試してみました、区切られたキーワードでこれをやってみましたgoo.gl/eZ7Kp
ガブリエル

この正規表現は動作するはずです:(\b\w+\b)\W+\12つの重複した単語に対して。回答を編集します。コンマは、他の正規表現が機能しない理由です。
-amiregelz

コンマは使用せず、スペースのみ、スペースとコンマは使用せず、あらゆる組み合わせを試しました。ここにテキストファイルがあります:goo.gl/sP20z-
ガブリエル

問題は、私が答えに書いた正規表現が、あなたが要求したフォーマット(私が思った)にのみ適用されることですword, word, anotherword。ただし、came across, came across3語または4語の場合など、少し異なる多くのインスタンスがあります。また、'likeの付いた単語もありdon'tNotepad ++正規表現システムでは事態がさら​​に複雑になります。Notepad ++正規表現システムはかなり面倒で制限もあるため、解決策はPython(または別の言語)で正規表現を使用するか、Notepad ++の形式固有の正規表現を作成することです。
-amiregelz

もう1つの問題は、複製された単語のほとんどが前の行にも現れるため、目標を達成するのが難しくなることです。重複する単語をすべて削除する場合は、それほど難しくありませんでした。あなたのような何かを行うことができ、このこのことを。Notepad ++で特定の正規表現を使用することをお勧めします(重複する単語のすべての形式を教えてください)、または問題に対する別のアプローチを検討してください。
amiregelz

1

仕事をする方法は次のとおりです。連続していない場合でも、重複する単語はすべて置き換えられます。

  • Ctrl+H
  • 何を見つける: (?:^|\G)(\b\w+\b),?(?=.*\1)
  • と置換する: LEAVE EMPTY
  • ラップアラウンドをチェック
  • 正規表現を確認する
  • チェックしないでください . matches newline
  • Replace all

説明:

(?:^|\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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.