デジタル/シゴト/技術

スタジオ・ポット
ポットのサイト内を検索 [検索方法]
▲ゴト技top| 第11章 123456789
[第11章●そろそろ正規表現はいかがですか]
3… 改行とタブ
[2004.01.29登録]

石田豊
ishida@pot.co.jp

このところ普段(週1度)より更新頻度が高くなっています。とうぶんこのペース(週2)で(いけたら)いきたいと思っています。

いよいよ具体的に正規表現による検索を試していきましょう。以降、操作系のことを書く場合は「K2Editorでの操作〔miでの操作〕」という具合に書きます。たとえば「検索メニュー「検索」選びます〔検索メニュー「検索・置換」〕を選びます」という文章は、K2Editorでは検索メニュー検索、miでは検索メニュー検索・置換をそれぞれ選ぶということです。各自の操作系の違いによって読み替えてください。

まずは小手調べ。前々回「悲しき高野豆腐」のページを表示し、すべてを選択してコピー、エディタの新規書類にペーストします。文書の最初の部分をクリックして、文章の先頭あたりに文字カーソルを入れます。

検索メニュー「検索」〔「検索・置換」〕を選び、出てくるダイアログウインドウでまず「正規表現」〔「正規表現検索」〕のチェックボックスにチェックを入れます。

そののち検索語欄に「富士(写真)?フ[ィイ]ルム(株式会社)?」(カッコと[]、?は半角)と入力し、「下検索」〔「次を検索」〕ボタンをクリック。

「正規表現」にチェックを忘れずに


ほら、K2Editorの場合は、次の図のように、文中の富士フイルム関係の文字列が全部反転表示になります。

「ビンゴ!」部分がすべて反転表示される


ね。「富士(写真)?フ[ィイ]ルム(株式会社)?」で正規表現検索することによって富士フィルムであろうと富士写真フイルム株式会社であろうと、全部の表現にまとめて適合してしまうでしょ。

miの場合は、ひとつずつが表示されるため、「次を検索」ボタンを押すたびに、順次それらの表現が選択されます。miでもK2Editorのようにヒットしたものすべてを見たい場合には、「一覧検索」ボタンをクリック。すると別ウインドウで検索語にヒットした部分が一覧表示されます。

miでは「一覧検索」で確認できる



これらをすべて「富士写真フイルム株式会社」に置換したい場合は、miの場合はそのまま下の「置換文字列」のところにこの文字列を入れ、「全て」のラジオボタンをクリックしてから「すべてを置換」ボタンをクリック。K2Editorの場合は「検索」メニュー「置換」を選び直して、検索語のプルダウンメニューから「富士(写真)?フ[ィイ]ルム(株式会社)?」を選び、「置換する語」に文字列を入れて、「全置換」をクリックします。

この検索ないし置換で、正規表現文字列がヒットするのは、
・富士フィルム
・富士写真フィルム
・富士写真フィルム株式会社
・富士フィルム株式会社
・富士フイルム
・富士写真フイルム
・富士写真フイルム株式会社
・富士フイルム株式会社
の都合8通りです。考え得る表記バリエーションはほぼ満足しているんじゃないでしょうか。つまりホントなら8回検索しなくちゃならないところを1回ですませることができるのが、正規表現のメリットなのです。

もちろん、この程度の長さの文章で、この程度の内容であるなら、正規表現を使うまでもないとは思います。ですが、巨大な文書であったり、また無数をファイルが対象であるなら、「いろんな条件をシコシコ個別に検索する」vs「正規表現で一発検索」は、まったくの別世界になります。そのためにシンプルなサンプルでマスターしちゃう意味がある、と私は思います。

このペーストした文章はWeb向けの書類ですから、段落を空行で区切り、段落先頭文字の字下げを行っていません。普通、印刷したりする文書のルールでは空行あけはせず、先頭文字の字下げを行いますね。そういう風に正規表現置換を使って変形してみましょう。

置換のウインドウで「\n\n」〔「\r\r」〕を「「\n□」〔「\r□」〕(□は全角のスペースだと思ってください)に変換します。すると一発で印刷風のルールに体裁を変更することができますよね。

これでわかるように\n(miでは\r)は改行コードを表します。改行コードが二つ続くものを、ひとつの改行と全角スペースに変換するという置換を行ったわけです。

こんなシンプルな例でそこまで言うのはどうか、とも思いますが、正規表現を使うってのは、「秘められたパターンを明らかにする」ということに他なりません。やりたいことが内在しているパターンは何かを考えることなのです。Web式の文書を印刷式の文書に作り直すということは「二重改行をやめ、段落先頭を字下げする」→「改行二つを改行一つ+全角スペースに置換すればよい」というパターン発見の作業になるのです。

改行コードがらみの検索は、非常に多用します。K2Editorでは「\n」、miでは「\r」が改行を表すということは、まず覚えておくことの第一になります。

改行がらみの置換の例をもうひとつ。

エディタで書いた文書をWeb公開したいような時があります。しかし、そのまま表示してしまうと、改行が認識されません。そこで「\n」→「<br>\n」(miでは\r)という置換を行います。すると改行をHTMLでの改行に置き換えることができます。

この置換表現は、既存のHTML文書に数行の文章を追加するような時に(わざわざホームページ作成ソフトを取り出すまでもないから)とても便利だと思います。

\n\rとよく似た表現に「\t」があります。これはタブコードのことです。たとえば「\t」→「□□□」で、タブコードを全角スペース3個に置換します。

以上のように「\+文字」という書き方で、改行であったりタブであったりという特殊なコードを示すことができます。改行やタブだけではなく、いろんな表現があります。詳しくは後述しますが、たとえば\dで数字、\sで空白文字などがあります。

さてこのように「\」が正規表現中で意味を持ってしまうと、「\」という文字そのものは、どうしたらいいのでしょうか。たとえば文中で「\125」とかとあるのを「125円」に置換したいような場合だってあるでしょ。「\」という文字そのものを表現したい時は「\\」と書き、これを口語的には「エンをエスケープして」というように言います。

エスケープしなければならないのは「\」だけではありません。「()」や「{}」、「?」なども正規表現では特別な意味を持つので、「\」でエスケープして、「\(」とか「\?」のように書かなければなりません。このようにエスケープしなければ表現できない文字のことを「メタキャラクタ」と言います。メタキャラクタの詳細についても、今後おいおい詳述していきます。

正規表現とは、メタキャラクタを駆使することで、いろいろな表現の「パターン」を表現する方法だ、ということなのです。

今日のレッスン(ええ、いつから「レッスン」になったんだよお)は、これにて終了。結局、改行とタブだけでつまんなかったとは思いますが、旅行の最初の日なんてこんなもん。東海道五十三次でも初日は品川までしか行けないんですから。ま、今後の展開をご期待ください。

この記事は
面白かったですか?

お読みになっての印象を5段階評価のボタンを選び「投票」ボタンをクリックしてください。

つまらなかった           おもしろかった    

投票の集計

投票[ 13 ]人、平均面白度[ 4.5 ]

※「投票」は24時間以内に反映されます※

ご意見をお聞かせください

  
メールアドレスはWeb上では公開されません





  

デジタル/シゴト/技術topへもどる page top
▲ゴト技top| 第11章 123456789

ポット出版ず・ぼん全文記事石田豊が使い倒すARENAメール術・補遺ちんまん単語DB
デジタル時代の出版メディア・考書店員・高倉美恵パレード写真「伝説のオカマ」は差別か
黒子の部屋真実・篠田博之の部屋篠田博之のコーナー風俗嬢意識調査ゲル自慢S-MAP
ポットの気文ポットの日誌バリアフリーな芝居と映画MOJもじくみ仮名

▲home▲


このサイトはどなたでも自由にリンクしていただいてかまいません。
このサイトに掲載されている文章・写真・イラストの著作権は、それぞれの著作者にあります。
ポットメンバーのもの、上記以外のものの著作権は株式会社スタジオ・ポットにあります。
お問い合せはこちら