Notepad++ 正規表現を使用してアンカーを削除する

Notepad++ 正規表現を使用してアンカーを削除する

これについて他の回答を探してみましたが、正規表現に関する何かを読もうとすると頭が爆発してしまい、何度読んでも、どれだけゆっくり読んでも理解できません。

Notepad++ を使用してファイルからこれを削除しようとしています:

<a style="text-decoration:none" href="/SOME RANDOM WORD">.</a>

しかし、これを行うには、Notepad++ でどの正規表現検索文字列を使用すればよいかわかりません。SOME RANDOM WORD は、文字通り任意の長さの任意の文字列にすることができますが、タグ/ページの開始と終了は同じです。

私はただ、

<a style="text-decoration:none" href="/SOME RANDOM WORD">.</a>

そして何も置き換えません。

答え1

「検索する文字列」行に、次のように入力します。

<a style="text-decoration:none" href=".+">\.</a>

置換: 空白のままにします。

次に、「すべて置換」をクリックします。

ここで重要なの.+は、which を使用することです。これは、任意の 1 文字以上を検索することを意味します。これは基本的に、テキストが同一であるが任意の URL を持つ URL が検索され、何もない状態で置き換えられることを意味します。URL やその他のものをフィルター処理することは可能ですが、投稿で文字列全体を何もない状態で置き換えたいと指定されているため、これ以上混乱させないようにこの情報は提供されていません。

必ず一番下にある正規表現を選択してください。ただし、これはすでにお考えになっていると思います。

また、 などの特殊文字をエスケープする必要があります。リンクに . ではなく実際のテキストが含まれている場合は、それも\.に置き換える必要があります.+

答え2

私は、受け入れられた回答を弱体化させたいのではなく、非常に良い回答であるため、別の回答を提出します。検索式がほぼ正しかったためです。

混乱の原因は、ファイル マスクでは*任意の長さ (ゼロを含む) の任意の文字列を意味するのに対し、正規表現では前のパターンの任意の数の出現を意味することです。したがって、要求されたのは、句内の引用符の間に任意の数のスラッシュ (のみ) を含む文字列でしたhref=

必要なのはhref="/.*"検索式であり、これはファイル マスク (?任意の 1 文字に一致する ) と正規表現 (.が使用され、.*任意の数の任意の文字を指定する ) の間のもう 1 つの大きな違いを使用します。

の異なる使用.法は、>.</a>検索式の末尾に が付くことで>、 との間の任意の文字が</a>一致することを意味します。リテラルのみに一致させるには、.検索式にリテラル と一致させたいことを指示する必要があり、 の前にいわゆる.を付けることでこれを行います。.逃げる文字\。したがって、\.リテラルに一致し.\*リテラルに一致します*

正規表現がファイル マスクと同じ一致を使用した場合、検索文字列は完璧に機能しますが、残念ながらそうではありません。必要なのは次のようになります。

<a style="text-decoration:none" href="/.*">\.</a>

ご覧のとおり、これはあなたが試したものとほとんど違いがなく、2 つの追加文字 (ただし重要な) があるだけですが、私の説明によって、さらに追求する自信が持てるようになることを願っています。これらの文字は必ずまた必要になります。

厳しいのは否定できませんし、簡単に入ることはお勧めできませんが、このテスター/便利です (ただし、エスケープ文字の前に付ける必要がある特殊文字として扱われます\。一部のコンテキストではそうなりますが、このコンテキストではそうではないため、検索式で試す場合はこれを考慮してください)。

表現が意味不明だからといって、がっかりしないでください。私は何年もこの表現を使ってきましたが、それでもまだ理解できないものがたくさんあります。特に、3の倍数である2進数のチェックは、Wikipediaページ- 説明は見つかりましたが、数学の学位を持っていても、表現の詳細を理解することはできません。

ファイル マスクを理解し、正規表現に必要な簡単な変更を使用することで、出発点が得られます。

関連情報