いくつかの異なる値を一度に検索して置換


14

Text_1andの複数のインスタンスを持つファイルがありText1、それらの文字列をそれぞれText_Aand に置き換える必要がありTextBます。

現在、各ファイルで2つの検索および置換機能を実行しています。1つはそれを検出Text_1して置換しText_A、もう1つはそれを検出Text1して置換しTextBます。

「検索と置換」を2回実行する代わりに、これを一度にすべて実行する方法はありますか?

私はDreamweaver CS3を使用していますが、Notepad ++、通常のNotepad、OO Writer、MS Wordもあります(それらが簡単な場合)。理想的には、DreamweaverまたはNotepad ++でこれを実行できますが、他の何かをダウンロードして作業を完了できます。コマンドラインの処理やバッチファイルの作成は必要ありません(気づいているのですが、あまり理解していません)。

上記の説明が明確でない場合、このように説明させてください...

1つのドキュメントで検索と置換を1回実行し、その1つの検索と置換インスタンス中に次のすべてを実行したい:

  1. 検索 Text_1置き換えText_A
  2. 検索 Text1置き換えTextB

私はない検索を行うと、いくつかのドキュメント間で交換してくださいしようとしています。


明確なパターンがある場合は、正規表現の検索と置換を使用することができます。それ以外の場合は不可能です@matt
Sathyajith Bhat

回答:



23

Notepad ++ 6.0以降では、次の手法を使用するスクリプトなしで実際に可能です。

検索:Text_1および置換:Text_A

検索:Text2および置換:TextB

検索:(Text_1)|(Text2)

置換:(?1Text_A)(?2TextB)

一般的な構文は次のとおりです。

Find: (FindA)|(FindB)|(FindC)...

Replace: (?1ReplaceA)(?2ReplaceB)(?3ReplaceC)...

?1は最初にキャプチャされたフレーズなどを指します。

私は次の答えからこれを得ました:https : //stackoverflow.com/a/16104946/287101


3

Notepad ++を使用すると、次のいずれかを実行できます

  • 置換する単語を含むすべてのファイルを開き、開いているすべてのファイルで検索/置換を使用します

    ここに画像の説明を入力してください

  • ファイルで検索/置換を使用する

    ここに画像の説明を入力してください

  • 検索および置換オプションを実行するマクロを記録し、再生します


それは私がやろうとしていることではありません。一度に複数のファイルで置き換えたくないので、1つのファイルの複数の文字列を一度に置き換えたいです。1回の検索と置換を実行してドキュメントを検索し、Text_1のすべてのインスタンスをText_Aに、Text1のすべてのインスタンスをTextBに置換できるようにします。1つのファイル内の2つの別個の値で置き換えられた2つの別個の文字列。
マット

画像リンクが壊れています。何らかの形で修正できますか?
ボビー

2

2つの異なる置換が行われているため、検索と置換を2回実行することをお勧めします。ただし、処理時間のトレードオフはほとんどありません。以下を考慮してください。

検索と置換を1回実行し、用語ごとに検索します。

Get Term
  Does term match?  If so, replace term
Get Next Term
...

実行目的のために、線形であると仮定し、これがO(n)時間で実行されると言います。

2つの異なる用語を検索する必要があります。検索と置換を2回実行すると、次のようになります。

Get Term
  Does term match?  If so, replace term
Get Next Term
...

Get Term
  Does term match?  If so, replace term
Get Next Term
...

O(2x1n)時間、または1つの用語を検索する場合の2倍の時間がかかります。

2つの置換を使用して2つの用語を検索すると、理論的には次のようになります。

Get Term
  Does first term match?  If so, replace first term
  Does second term match?  If so, replace second term
Get Next Term
...

用語を取得するのにそれほど処理能力は必要ないので、基本的に各用語に対して2セットの検索を検索し、O(1x2n)の時間を与え、1回実行するが2つの用語を検索します。

各用語を2回ロードしないで時間を節約できますが、各用語を2回検索するのにより多くの時間を費やすことになり、トレードオフはほとんどありません。その機能。

プログラマーに対する免責事項:これは一般的な例です。私はそれがより良いことを知っていますが、その機能が見つからない理由を示しようとしています。


0

Notepad ++での正規表現のサポートは厳しく制限されています。代替演算子がなければ、あなたがやりたいことに近づくことさえ望みません。使用するsedか、正規表現をより適切にサポートするエディターを使用する必要があります。

正規表現の構文に一般的に使用されるGNU拡張機能には次のものがあります。

  • ?演算子、ゼロまたは1つの種類を意味します。
  • | 代替演算子(「foo | bar」は「foo」または「bar」のいずれかに一致します)
  • 貪欲な/ gや大文字と小文字を区別しない/ iなどの修飾子。
  • {a、b}は、a種類とb種類のトークンを示します。
  • (パターン)+は、同じパターンの1つ以上の一致をマッハします

Notepad ++を支えるScitillaコンポーネントは、厳密にPOSIX互換であり、これらの拡張機能を認識しません。完全な概要といくつかの例については、正規表現を参照してください。

ソース

こちらもご覧ください

sedWindows用GNUWin32


0

バッチ検索と置換にTextCrawlerを使用します。(Textcrawlerよりも高速であるため、複数のファイルでの単一の検索/置換にNotepad ++を使用します。)TextCrawlerは、正規表現と通常の検索/検索をサポートしています。バッチファイルは保存して、後で使用するために再ロードできます。


回答のソフトウェアの推奨方法を参照してください特に、最低限、ソフトウェアの入手先を伝えます。
G-マンは「元に戻すモニカ言う

バッチ機能は、無料のProバージョンのTextCrawlerでのみ使用できます。
ホッブズ

0

また、ActiveXプラグイン(Notepad ++用)を使用してカスタムスクリプトを実行することでも実行できます。

NppApplication.activeEditor.text
=NppApplication.activeEditor.text
.replace(/Text_1/g,"Text_A")
.replace(/Text1/g,"TextB")

これは機能しますが、ActiveXプラグインの現在のバグにより、スクリプトを実行するたびにNULL文字がファイルに追加されることに注意してください。
エイダン

-1

これはすべての数字に対して機能します(テキスト/記事からすべての数字を削除するため)

  1. Ctrl + Hを押して、[検索と置換]ダイアログを開きます。

  2. [検索対象]ボックスに^#と入力します

  3. [置換]ボックスは空のままにします。

  4. すべてを置き換えます。


1
OPは数字を削除するだけでなく、それを文字に置き換えたいと考えました。
booyaa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.