Vz resources : Regular Expression

耳より正規表現入門

VZユーザーのための,VWXによる正規表現利用のてびき
初出:nifty:FGALDC/MES/13/09142〜 (2002/06/18〜2002/07/21)

第5回  メタキャラクタの使い方 (2) * (アスタリスク)

もっとも正規表現らしいメタキャラクタの登場です。

ウルトラマンでも第2話がバルタン星人でしたからね。フォッフォッフォッ。Vo\oV

同じ『*』でも,コマンドラインのワイルドカードがすべての文字の省略形であったのに対し,正規表現の『*』は直前の正規表現を修飾するメタキャラクタであって単独で使うことはできません。これは他の繰り返し指定型のメタキャラクタも同じです。

dir * → 正規表現だとしたら → dir .*

…と言いたいところですが,本当の概念はだいぶ違います。

*』 は,直前の正規表現の「0」回以上の繰り返しにマッチするメタキャラクタです。「0」とは今更言うまでもないことですが,無いということです。ゼロという概念は天才数学者によって「発見」されたものですが,天才でなければ思い付かないほど難しい概念であるわけですね。ピンと来なくてあたりまえですから,ちょっとゆっくり考えてみてください。

・・・

さて,0回以上の繰り返しとは?

直前の1個の正規表現があってもなくてもよい。ある場合には,いくつあってもよい。これは「任意」というやつです。

「更新手数料と国土安全協会の協賛費一口を併せて2500円になります」
「国土安全協会の協賛費は,一口固定ですか」
「いえ,任意です。何口でもできます」
「それなら入会しません
「それでは更新手数料のみ1500円です」

・・・ありゃ,これは余談ですな。(^^;

さて,通常わたしたちが期待してしまう動作は,次に述べる『+』の動作なのではないでしょうか。それはワイルドカードが「何か存在するもの」の代替であるからです。これに慣らされてしまったわたしたちが,『*』をうまく使えなくても仕方がないのです。そう割り切ってしまえば気楽なものですね。

はっきり言って,現実には『+』の方を使うことが多いと思います。しかしそれなのに何故『*』を先に説明するかと言うと,正規表現のメタキャラクタには基本セットと拡張セットが存在し,『*』は基本セット,『+』は拡張セットに属するからです。『+』を使う表現はすべて『*』を使って書くことが可能です。ただ,おそろしく面倒な書き方になってしまうのです。今後いろいろなUNIX系ツールを使うことがあるかもしれません。もしかすると基本セットしか使えないという可能性もあるわけです。そんな時に困らないように,『*』の使い方も覚えておいたほうがよいでしょう。

*』は次のように使用します。(なかなか例が思い付かないんですよ〜(^^;

感嘆詞,人それぞれ。(一部FGALDCならでは)

わー*い。

この正規表現はこれらの感嘆詞にマッチします。(出演者に感謝(^^;

*』だけで1回以上の繰り返しを表現するなら,

ーー*

…のように,同じ文字を重ねておいて『*』を使えばよいでしょう。

また,『*』そのものにマッチさせるには,やはり『\*』としてください。


The VZ resources. ©2002 by mezala. mailto:mezala@nifty.com