【ハウツー】

ゼロからはじめる正規表現 秀丸編 - 漢字を開く+置換マクロを作成する

    阿久津良和  [2008/11/25]

    「した所」を「したところ」に開く

    以前の連載で、「有り難い」「有難い」などを「ありがたい」などに変換する"開く"正規表現を紹介しました。この例では、送り仮名を意識せずに変換できるため、さほど難しくありません。しかし、「○○した所」や「~所在が」となりますと、前後に付く単語を意識しなければなりません。これはブラケットを用いて、前後に付く単語を特定することで、マッチする文字列を限定することができます。まずは単純な正規表現を作り上げましょう。

    最初に変換条件として「した所」を「したところ」に開くところからはじめます。検索文字列として想定されるのが「した所」「する所」「あの所」といったあたりでしょうか。これらをまとめると「[たるの]所」となり、置換文字列は「\1ところ」となります。しかし、このままでは「た」「る」「の」といった文字列を置換することができません。そこで検索文字列の「[たるの]」を「\f」で囲みます。このマッチ部分が置換文字列として指定した「\1」にマッチするため、正しく3つの単語を開くことができます(図1~2)。

    図1 検索文字列に「\f[たるの]\f所」と入力し、置換文字列に「\1ところ」と入力して[全置換]ボタンをクリックします

    図2 これで各単語が「~ところ」と置換されました

    正規表現

    検索:\f[たるの]\f所
    置換:\1ところ

    Before

    した所
    する所
    あの所
    

    After

    したところ
    するところ
    あのところ
    

    次は熟語として「所」が使われる場面を想定しましょう。この処理を行なわないと「した所在」が「したところ在」と置換され、意味を満たさないヘンな文書になってしまいます。さっそく辞書を引いてみますと、「所在」「所属」「所長」など先頭に「所」が付く熟語はかなりの数にのぼりました。それらのなかから汎用性の高いものを含めると「為感期見載在作産詮蔵属長定得有与用論」となり、「所」の後にこれらの文字列がマッチしないようにするためには、同じようにブラケットで囲みながら、否定を意味するキャレットを追加します。

    これで置換文字列は「\f[たのる]\f所\f[^為感期見作載在産詮蔵属長定得有与用論]\f」となりました。ポイントはマッチさせない文字列も「\f」で囲んでいるところです。キャレット付きブラケットで囲んだ「[^為感期見作載在産詮蔵属長定得有与用論]」にマッチしない文字列を置換後にも残すためには「\f」で囲み、置換文字列を「\1ところ\3」にすることで、正しく置換されるようになります(図3~4)。

    図3 置換文字列に「\f[たのる]\f所\f[^為感期見作載在産詮蔵属長定得有与用論]\f」と入力し、置換文字列に「\1ところ\3」と入力して[全置換]ボタンをクリックします

    図4 これで「した所」などは置換されますが、「あの所在地」といった熟語になっている文字列は置換されません

    正規表現

    検索:\f[たるの]\f所\f[^為感期見作載在産詮蔵属長定得有与用論]\f
    置換:\1ところ\3

    Before

    した所
    する所
    あの所
    あの所在地
    あの所長は
    彼が所属する
    

    After

    したところ
    するところ
    あのところ
    あの所在地
    あの所長は
    彼が所属する
    

    この置換は本ハウツーで紹介した検索文字列として比較的長く、そのまま置換ダイアログに入力するのは少々煩雑です。そこで秀丸のマクロ機能を使いましょう。秀丸マクロで置換を行なうには「replaceallfast」文を使用します。置換自体は「replaceall」文でも行なえますが、一括変換は前者の方がスピーディに行なえます。また、同文にはオプションが設けられており、正規表現による置換を行なうには「regular」を付けなければなりません。加えてマクロ上で「\f」といったエスケープコードを用いる場合、「\f」と記述しなければなりませんので、あわせてご注意ください。

    最後に選択した範囲を対象にする「inselect」も付けましょう。これで文書全体はもちろん選択範囲のみを対象にすることが可能です。これらをまとめると以下のようになります。

    //~した所→~したところ に置換
    replaceallfast "\\f[たるの]\\f所\\f[^為感期見作載在産詮蔵属長定得有与用論]\\f", "\\1ところ\\3", regular, inselect;
    

    このマクロを任意のファイル名で作成しておきましょう。秀丸マクロの保存先は「動作環境」ダイアログの「環境」で指定可能です。初期状態では秀丸をインストールしたフォルダとなっていますので、必要に応じて変更してください(図5)。

    図5 囲みの内容をそのまま秀丸にコピー&ペーストし、任意のファイル名(画面の例では「Replace.mac」)で秀丸と同じフォルダもしくはマクロフォルダに保存します

    後は秀丸のマクロ実行機能で作成したマクロファイルを実行すれば、置換ダイアログから実行した時と同じ結果を得られます(図6~7)。今回はひとつの置換パターンを紹介しましたが、ほかの置換パターンをマクロに追加することで、自分だけの原稿整理マクロを作成することが可能です。文書を書く機会が多い方は是非お試しください。

    図6 マクロを実行するには[マクロ]メニューから[マクロ実行]を選択します

    図7 マクロ実行ダイアログが表示されたら、図5で作成したファイルを選択して[OK]ボタンをクリックしてください。これで図4と同じ置換結果を得られます

    阿久津良和(Cactus)

    関連記事

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

      新着記事

      特別企画

      マイナビニュースマガジン