視覚障害者のための
正規表現入門4
【選択とまとまり】
大きな文書があるとします。
その文書のなかで、ある人について書かれた部分を探し出したい。
でもその人の名が「山田」だったか、「山中」だったか、「山下」だったか、どうしても思い出せない。さて、どうしよう、という問題です。
(方法)
山田で検索し、それで該当する部分が見つからなければ「山中」で検索。それでもだめなら「山下」を探す。
立派な方法です。
でもスマートじゃないのが難点です。
そして、ひとつの文書から探すのならこれでもいいでしょうが、いくつもの文書を探さなければならない場合などは、時間がかかりすぎるでしょう。
正規表現はこういう場合にぴったりの表現手段をもっています。
正規表現、
山(田|中|下)
です。
これで、山田、または山中、または山下を意味します。
はじめての表現方法がふたつ出てきました。
ひとつはパイプラインとかパイプとか呼ぶ記号|です。これは選択を意味します。英語のORです。
やや冗長になりますが、上述の正規表現は次の表現と同じです。
山田|山中|山下
パイプラインは選択ORですから、これはそのまま「山田または山中または山下」です。
そして、この表現では文字「山」が各選択に共通しているという点を捉え、簡略化すると、最初の正規表現、
山(田|中|下)
になります。
「田|中|下」が丸括弧でくくってあります。なぜでしょう。
算数の丸括弧を思い出してください。
5 × (3 + 2 + 1)
この式で括弧がなければ、5×3の結合力が強いので、5×3が先に計算されてしまうため、答えが違ってきますね。
正規表現、
山(田|中|下)
も同じです。
「田|中|下」は結合力が弱いのです。括弧のない正規表現、
山田|中|下
は、「山」の次は「田」がくるという文字の連なり方に関する規定のほうが強いので、「山田か、または、中もしくは下」という選択になってしまいます。
これを避け、山の後に、「田または中または下」の選択が続くという意味にするため、「田|中|下」を丸括弧でくくっているのです。
また丸括弧は表現をまとめます。
これを使うと表現が広がります。
たとえば前節で説明した繰り返しの正規表現「A*」や「A+」を発展させ、
(ABC)*
(ABC)+
というような表現が可能です。
アスタリスクは0回以上の繰り返し、プラスは1回以上の繰り返しでしたね。
だから、上の正規表現は、(ABC)の0回以上の繰り返し、(ABC)の1回以上の繰り返し、という意味になります。
具体的には、次のような文字の連なりを表します。
ABC
ABCABC
ABCABCABCABCABC
選択を併せてもっと複雑な正規表現を作ってみましょう。
(ABC|123)+
上の正規表現を見て、どんな文字の連なり方を表しているか、わかりますか。
これは、次のような文字の連なりを表します。
ABC
123
ABCABC123
123ABC123ABC
つまり、ABCもしくは123の1回以上の繰り返しです。
正規表現ABC|(123)+とは意味が異なることに注意してください。
これは、ABCか、あるいは123の一回以上の繰り返しを意味しますから
ABC
123
123123
123123123
などの意味になります。
正規表現(AB(C|1)23)+ならどうでしょう。
もうおわかりですね。
ABC23
AB123
ABC23AB123
AB123ABC23ABC23
などです。
次の項目へ
前の項目へ
正規表現入門の目次ページ
文字主体トップページ
Copyright(C) 2003 Kazuhiro Kito All rights reserved