Top  > RepWの部屋

RepW Ver. 1.01

シンプルな複数文字列置換ツール


   こういうTextファイルを使って置換する
複数の置換を一度に行いたい時
  ある文字列の置換を複数ファイルに対して行いたい、ということはよくある。でも、あるファイルに対して、AをBに、CをDに、という複数の置換を大量に行わなければならないという状況はそれほどない。

  それほどないが、時にはあるかもしれない。
  それも100個以上の置換を。

  そんな時一番面倒なのは置換リストを作成することだ。できれば軽いテキストエディタで打ち込みたい。けれど、その後はどうしよう。Perlなどでスクリプトを組めばいいのだろうが、面倒だ...

  そんなレア・ケースに役に立つのがRepW。
  必要な情報をiniファイルに書いて実行するだけで、すぐに置換が開始される。

iniファイル

入力ファイル

辞書ファイル

出力ファイル
   iniファイルを読み込んで、いきなり置換をはじめるRepW
  最低限の設定は
    単純な文字列の置換であれば、iniファイルに指定する項目は次のようなものだけで済む。

    ・ 入力ファイルはどこにあるか (IN= )
    ・ 辞書ファイルはどこにあるか (DICT= )
    ・ 出力ファイルは何にするか (OUT= )
    ・ 辞書の区切り文字は何にするか (DICT_DLMT= )
    ・ 辞書のコメント行の条件 (DICT_CMNT= )

  iniファイルはデフォルトでRepW.exeがあるフォルダのRepW.iniが使用されるが、実行時パラメータとして他のiniファイルを指定することも可能である。
  正規表現はVBScript頼み
    RepWのデフォルトのモード(MODE=1)では正規表現が使えない。正規表現を使うためには iniファイルで MODE=3にする必要がある。別途DLLが必要ない代わりに、このモードでは「Microsoft VBScript Regular Expressions 5.5」を利用しているので、作動環境として

    ・IE 5.5以上

  が必要である(正確にはIE 5.5以上によりインストールされるVBScript 5.5以上が必要)。気になる人はエクスプローラでWINNT\system32\vbscript.dllのプロパティnのバージョンを確認してみよう。

  このモード(MODE=3)での動きは、例えば次のようなVBスクリプトの緑の部分と赤の部分を
緑の部分<区切り文字>赤の部分として辞書ファイルに持って、それらを順に入力ファイルの各行に繰り返すものと考えるとわかりやすいかもしれない。
 
 DIM re
 DIM myIn, myAns

 Set re = New RegExp
 re.Global = True
 re.IgnoreCase = False     
' IgnoreCaseはiniファイルで変更可能
 re.MultiLine = False
 re.Pattern = "
(\w+)\s(\d+)"

 myIn = "message 0001"    
' ここが入力行にあたる

 IF (re.Test(myIn)) then
   myAns = re.Replace(myIn, "
[$2] $1")
   Call MsgBox(myAns)
 ELSE
   Call MsgBox("Unmatch !")
 END IF
つまりMODE=3ではこんな感じの処理をCOMでたたいているだけ
  複数の入力ファイルを扱いたい時はMultiというフォルダを用意する
      インストールしたままの状態では、iniファイルで指定した一つの入力ファイルしか扱えない。iniファイルを複数用意してバッチを組むという方法もあるが、それでは手間がかかる。

  そんな時はRepW.exeのあるフォルダにMultiという空のフォルダを作ってみよう。右図のような画面が出て複数入力ファイルを指定できるようになる。

  複数入力を行わない元のRepWに戻したい時は、Multiというフォルダを#Multiなどにリネームするか、削除すればよい。
 
複数指定の画面
(クリックで詳細)
  その他の機能
    iniファイルのパラメータを変えることにより、次のようなこともできる。

    ・ 辞書ファイルの各行にマッチした数をカウントリストとして出力 (COUNTLIST= )
    ・ マッチした数が1以上のものを新しい辞書として出力 (NOZERO_DICTOUT= )
    ・ 改行のみの行の出力の抑止 (CUT_EMPTYLINE= )

  少し変わった使い方としては、改行コードがCRCRLF (0x0d0d0a) になってしまっている入力ファイルをCRLF (0x0d0a) にして出力することもできる( IN_LF=CRCRLF )ので、ダミーの辞書(中身が空、コメントのみ、AをAに変えるだけなど)と組み合わせれば、CRCRLF->CRLF変換プログラム として使うことも可能だ。
  注意することは
    RepWがやっていることは単純だ。入力ファイルの一行につき辞書ファイルを上から順に一行づつ読んで置換してゆくだけのことである。内部で順番を入れ替えないので、ユーザーは辞書ファイル内での行の並べ方を考慮する必要がある。特に辞書を見やすくしようとソートをかけると、置換後の結果が変わってしまう可能性があるので注意が必要だ。また、処理できるテキストの文字コードはシフトJISのみである。
  Q&A
  更新履歴
  2003/10  Ver. 1.01  置き換え先に0x5cを含む文字があった場合のバグを修正
2002/11  Ver. 1.00  ファーストリリース
  2003/11/08 )  
 名称  RepW   Ver. 1.01
 作動OS  Windows 2000など (*)
 作動環境  MODE=3を使う場合はIE 5.5以上に
 含まれるVBScript 5.5以上
 必要なDLL  上記以外はなし
 種別  フリーウェア
 ダウンロード  ベクター
 (*) 実験:Win95でRepWは動くか