視覚障害者のための
正規表現入門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