More ソフ得! =ソフトの宝島=
第37回 speeeeed
複数ファイルの文字列を一括変換
1つの文書の中で、ある文字列を別の文字列(例えば「看護婦」を「看護師」)に置換したいとき、テキストエディタやワープロソフトの「置換」という機能を使えば一発で完了しますね。
しかし、複数のファイルを対象にする場合は、いちいち当該ファイルを開いて置換していかなければなりません。
speeeeedは、これを一括処理してくれるというありがたいソフトです。
これがspeeeeedの操作画面です。
上の「検索文字列」に置換したい文字を、下の「置換文字列」には置換後の文字列を記入。対象ファイルを下で選択、追加していく。それだけで複数の対象ファイルを一気に検索し、置換対象文字列を置換してくれます。
私は今まで、この作業をテキストエディタQXのマクロを使ってやっていましたが、対象文字の文字数に制限があったり、動作が遅かったりで不満を持っていました。speeeeedを見つけてからは、もっぱらこれを使っています。動作の速さはさすがに単独ソフトだけあって、エディタのマクロとは比較になりません。
正規表現を使いこなせ
speeeeedには「大文字と小文字を区別」と「正規表現検索」というオプションチェック項目があります。
「大文字と小文字を区別」は、アルファベットの大文字と小文字を区別するかどうかです。チェックしなければ、
「MAC」と「Mac」は同じものとして認識します。
「正規表現」というのは聞き慣れない人もいるでしょうが、検索や置換には欠かせないテクニックです。
まず、ここから、BREGEXP.DLLというDLLを入手し、解凍したDLLをWindowsかspeeeeedのフォルダに入れておいてください。そうしないと正規表現が使えません。
正規表現はなかなか奥が深く、またいろいろなローカルルールがあるので使いこなすのは結構大変なのですが、トライしてみる価値はあります。うまく使いこなせば、相当やっかいな作業が一瞬にして終了します。
代表的な「正規表現」には以下のようなものがあります。(QXエディタのHELPにある正規表現の解説=araken氏記述=より抜粋、編集)
^ 行頭
(例)^前略
行頭の「前略」という文字列にマッチ。
$ 行末
(例)。$
行末の区点(。)にのみマッチし、それ以外の「。」にはマッチしない。
[xxx] [] 内の任意の文字xxx
(例)[abc]
a または b または c にマッチ。
[^xxx] [] 内以外の任意の文字xxx
(例)[^ab]
a と b 以外の文字にマッチ。
(例)印[^刷]
「印字」、「印画」、「印象」などにマッチするが、「印刷」にはマッチしない。
----------------------------------------------------------------
[ ] 内に指定する文字は - で区切って範囲指定することができます。
(例)[ぁ-ん]
すべてのひらがなにマッチ。
(例)[A-Za-zA-Za-z]
全角および半角のアルファベットにマッチ。
(例)[^A-Za-z_]
アルファベットおよびアンダースコア以外の文字にマッチ。
----------------------------------------------------------------
+ 直前の正規表現1個以上
* 直前の正規表現0個以上(任意の文字0〜複数個)
. 任意の1文字
? 直前の正規表現0個または1個
\t タブ
\n 改行
\ 次の文字を通常の文字として扱う
(例) \\
\という文字そのものにマッチ。
(例)\?
?という文字そのものにマッチ。
(注意)これらの文字は正規表現を構成する特殊な文字なので、そのまま入力するとその文字そのものを検索するのではなく、正規表現のルールを示していると解釈されるため、必ず「\」という文字を前につけて使います。
(例)x.*y
xy , xay , xaaaaaaay , xabcdあいうy などにマッチ。
(例)a*
a が0文字以上連続した文字列にマッチ。
(例)xa*y
xy , xay , xaay などにマッチ。
(例){[0-9]*}
{} , {0} , {1000} , {12345678} など、{} 内に0個以上の数字がある文字列にマッチ。
(例)a+
a が1文字以上連続した文字列にマッチ。
(例)xa+y
xay , xaay , xaaay などにマッチ。
(例)[a-z]+
アルファベットの小文字が1文字以上連続した文字列にマッチ。
(例)x[a-z]+y
は xay , xpqrstuy , xzzzy などにマッチし、xy , xAy , xa#y などにはマッチしない。
(例)a?
a が0文字または1文字にマッチ。
(例)xa?y
xy と xay にマッチ。
(例).?
任意の文字が0文字または1文字にマッチ。
(例)x.?y
xy , xay, x1y , xあy などにマッチ。
(例)エディター?を使う
「エディタを使う」または「エディターを使う」にマッチ。
----------------------------------------------------------------
かなり難しい面もありますが、一種のゲームだと思えば多少の失敗もよい経験となるでしょう。
検索・置換テクニックは、様々な事務仕事で大いに役に立つはずです。