特殊な指定をするメタ文字1
これまで、文字指定、量指定、位置指定という指定方法を見てきましたが、正規表現にはそれ以外にも、ユーザの作業を助けるための付加的な部品として、特殊な指定をするメタ文字があります。
選択を表すメタ文字
A|B |
---|
意味:AまたはB [or演算子] |
|(バー)は、その前後にある正規表現のどちらか(どちらでもよい)に一致させるメタ文字です。その働きからor演算子とも呼ばれています。
大谷大学|龍谷大学 |
---|
たとえば、上記の正規表現では「大谷大学」という単語か、「龍谷大学」という単語にマッチします。
また、()を使うと範囲を任意で指定することも可能です。
(大谷|龍谷)大学 |
---|
このように書いても、「大谷大学」か、「龍谷大学」という単語にマッチさせることが可能です。しかし、このように書くと、
大谷|龍谷大学 |
---|
「大谷」または「龍谷大学」という単語にマッチするということになってしまうので注意が必要です。
or演算子は1つの正規表現の中で、複数使用することも可能です。
大谷大学|龍谷大学|京都産業大学|立命館大学 |
---|
このように書くと、「大谷大学」または「龍谷大学」または「京都産業大学」または「立命館大学」という単語にマッチさせることができます。
or演算子を使用する際の注意点は、一度マッチが成功するとそこで働きを終了してしまうと言うことです。
京都市役所は中京区にあります。 |
たとえば、このような文章があったとします。これに以下のような正規表現を使用すると
(京都市|京都市役所) |
---|
この文章の中には、「京都市」という単語は有りませんが、「京都市役所」という単語はあります。上記の正規表現は「京都市」または「京都市役所」を探し出すという意味なのでユーザは「京都市役所」という単語が帰ってくることを期待します。
しかし正規表現は「京都市役所」の中の「京都市」がマッチした時点で検索を終了してしまいます。
【結果】 |
---|
京都市役所は中京区にあります。 |
これを防ぐために、or演算子を使用する時には”長い文字列の方を先に書く”ことが重要です。つまり、先ほどの例では
(京都市役所|京都市) |
---|
こう書いてください。
【結果】 |
---|
京都市役所は中京区にあります。 |