【サルにもわかる正規表現入門】

その1

1.正規表現とはなにか?

 端的に言えば、「いくつかの文字列を一つの形式で表現するための表現方法」です。

 では、なぜこの表現方法が有名なのかといえば、この表現方法を利用すれば、たくさんの文章の中から容易に見つけたい文字列を検索することができるためです。

 この形式を使えば、以下のようなコギャルの会話にもついていけます(^_^)

「Windows ってあって…WINDOWSかもしんないしぃ、次にスペースが入ってるかもしんないしぃ、入ってないかもしんないし、後にやっぱ 98 が付くってゆーかー、もしかすると 95 が付いてもいいかなぁって感じでぇ…」

 これ以上続けるとこちらがキレてしまいそうなのでこのあたりにしておきますが…これは、正規表現で書くと…

W(indows|INDOWS) ?9[85]
って感じで一行で書けちゃうっていうかぁ…あ、つい、口調が移ってしまった(^_^;)…書けるのであります。

 慣れればこれほど便利な方法はありませんが、ただ、ちょっと難しそうに見えます。そこでこの入門書の出番ということになります(^_^)
 

2.正規表現で使用する特殊文字

 正規表現とは、前に説明しましたように、「いくつかの文字列を一つの形式で表現するための表現方法」です。その「一つの形式で表現するため」に、いくつかのある文字に対して特別な意味を与えています。

 以下に述べる文字がその役割を担っています。すべて半角です。
 


.   ^   $   [   ]   *   +   ?   |   (   )

 これらの特殊文字を正規表現では、メタ文字と呼んでいます。「メタ」というのは、「超」と言う意味で、あの「チョーむかつく」の「チョー」と同じ意味です。普通の文字以上の意味を含んでいるという意味になるかと思います。

 しかしながら、これらのメタ文字は文字としてもよく見受けられる文字ですよね。そうです、そこに問題があります。

 例えば、私たちはおおっぴらにすることをはばかって以下のような書き方をしたりします。

「俺はB*** G****が大嫌いだ!」
 これだと「俺はBeer Gardenが大嫌いだ!」という酒の嫌いな方の意見になったりします(^_^)が(ひとつ文字が足りないことはおいといて(^_^;;)

 そこで、この行を検索しようとして、検索する文字列にそのまま

 「俺はB*** G****が大嫌いだ!」
と入力したりすると、永久にこの行は検索できません(^_;)
 もうおわかりかと思いますが、この行に含まれている *というメタ文字が*そのものを意味していないからなのです。私なんかもよくそれを忘れていて、「なぜ誤検索するんだろう」と悩むことがよくあります。
 ですので、このメタ文字を単なる普通の文字として検索したい場合は、それらメタ文字の前に、\を付加しなければなりません。下記の例のように。
 

\.  \^  \$  \[  \]  \*  \+  \?  \|  \(  \)
  なお、\ 自体は、\\と書きます。