4. 秀丸エディタの正規表現4−1 秀丸エディタここからは、私の使っている 秀丸エディタ を例に話を進めていきたいと思います。他のエディタを使う人は、 話をそのエディタ用に読み替えて下さい。データには、本サイトで公開している古典作品原文のうち、以下のテキスト 「竹取物語」… taketori.txt 「伊勢物語」… ise.txt 「土佐日記」… tosa.txt を使おうと思います。 説明を実際に試してみたい方は、この3つのファイル をダウンロードして、どこか適当な場所に置いて下さい。 この節ではDドライブに D:\TEXT というフォルダを作り、 そこにファイルを置いたとして話を進めます。いじったテキストを間違えて保存 してしまうこともあるでしょうから、元のファイルを別の場所にも保管しておいて ください。 ◆ 秀丸エディタで使える正規表現◆
見ると、前章の Word のワイルドカードとは少しずつ違いますが、こちらの方が 有名どころ(grep, sed, perlなどのテキスト処理言語や多くのエディタ) の正規表現により近い記述方法です。 → 第8章 その他のツールと正規表現 4−2 正規表現を用いて検索する伊勢物語のテキストから、四段活用の動詞 "給ふ" を検索してみます。 ひらがな表記の "たまふ"、漢字表記の "給ふ"、そしてそれらの 6つの活用形すべて (-は、-ひ、-ふ、-へ)を対象とします。(1) 秀丸エディタを起動して D:\TEXT\ise.txt を開きます。 (2) 秀丸エディタの検索・置換機能は [検索(S)] という独立したメニューに なっています。[検索(S)]-[検索(F)] を実行します。 (3) 現れた窓の中にある「正規表現」をチェックします。 (4) テキストボックスに以下の正規表現を入力して検索を実行します。
(5) 最初にマッチしたパターンの所にカーソルが移動します。次の場所を探 すには、下の候補だったら [F3] 、上の候補だったら [Shift]+[F3] キー を押すと、次の場所へカーソルが移動します。 (6) エディタは文法を解釈しているわけではないので、(4)の検索を行うと、 "のたまふ"という単語の中の"たまふ"にも当然ヒットします。 (「のたまふ」は「言ふ」の尊敬語で、「給ふ」とは別の単語です。) これを避けたい場合は、
とします。このパターンで検索すると、 "の"以外の1字 + "たまふ" または "の"以外の1字 + "給ふ" という文字列がヒットします。 4−3 正規表現を用いて文字列置換する(7) ひらがなの "たまふ" を漢字の "給ふ" に置換してみましょう。[検索(S)]-[置換(R)] を実行するのですが、単に "たま" を "給" に置換 するだけでは "のたまふ" などまでが "の給ふ" となってしまうので、 ■方法1 「タグ付き正規表現」で検索→置換を実行します。 パターンをカッコで括ることで、いくつかの部分に分割します。 このパターンに一致した検索文字列は、部分ごとに、最も左の部分から 順に \1 \2 \3 …… \9 という特殊文字へ格納されます。
解説:上記の検索をしてマッチした文字列があると、 \1 ←「の」以外の1字 \2 ←「たま」 \3 ←「は」「ひ」「ふ」「へ」の中のどれか が格納されています。 ■方法2 旧バージョンでは、秀丸独自の「タグ付き正規表現」が用意されていました。 \f という特殊文字が、パターンをいくつかの部分に分割します。 このパターンに一致した検索文字列は、部分ごとに、最も左の部分から 順に \0 \1 \2 …… \9 という特殊文字へ格納されます。 方法1の、カッコを使ったタグと数字がずれるので注意。
解説:上記の検索をしてマッチした文字列があると、 \0 ←「の」以外の1字 \1 ←「たま」 \2 ←「は」「ひ」「ふ」「へ」の中のどれか が格納されています。 4−4 最長一致の原則一般に、正規表現の記述には、「最長一致の原則」というものがあります。竹取物語のテキストから「え〜打消」(不可能の表現) を検索してみましょう。 (1) 秀丸エディタを起動して D:\TEXT\taketori.txt を開きます。 (2) [検索(S)]-[検索(F)] を実行します。 (3) テキストボックスに以下の正規表現を入力して検索を実行します。
これで "え見つけ奉らず" "え取らじ" などを検索することが可能なはず。 ところがこのパターンは、下記の赤字部分のような文字列 この国に見えぬ玉の枝なり。このたびは、いかでか辞びまうさむ。 さらには、 「をぢなきことする船人にもあるかな。え知らで、かくいふ」と思して、 「わが弓の力は、龍あらば、ふと射殺して、頸の玉は取りてむ。遅く来 る奴ばらを待たじ。」と宣ひて、船に乗りて、海ごとに歩き給ふに、 いと遠くて、筑紫の方の海に漕ぎいで給ひぬ。 "え知らで" "え知らで、かくいふ」と思して、……奴ばらを待たじ" 実は、「〜回以上の繰り返し」を含む正規表現は、原則として検索対象の中 で最も長いパターンとまず最初に一致するよう決められているのです。 これを最長一致の原則といいます。 文や句を超えた長い文字列を検索してしまわないためには、パターンを
などとするのがよい方法のひとつです。 逆に、わざと「最も短い」パターンに一致させたいこともあるでしょう。 正規表現が扱えるソフトや言語の中でも、Perlなど一部のものについては、最も短い文字列を一番先に検索する「最短一致」優先パターンを記述することもできます。 詳細は、関係書籍やWebサイトを参照して下さい。 秀丸エディタでは、これを「ものぐさ指定」と呼びます。
|