トップ 正規表現とは 基本のメタ文字 練習問題

量を指定するメタ文字1

 多くの場合、前の章で学んだ文字の指定はそのままでは使用しません。文字指定は基本的に1個の文字ごとにしか指定できないからです。そのため、この章で学ぶ量指定とセットで使用します。

文字の繰り返しを表すメタ文字


○*
意味:○の0回以上の繰り返し

 「*」(アスタリスク)は直前の文字が0回以上繰り返されるもの、全くないか、またはいくつかあるかを指定するメタ文字です。このままではわかりにくいので、下のような例を考えてみましょう。

bo*m

この正規表現で*はoにかかっています。この正規表現にマッチするのは次のような単語です。

bm
bom
boom
booooooom

oは0個以上の繰り返しです。つまりbmのようにoが無くてもマッチします。また、いくつあってもよいので、bomもboooooomもマッチします。

 このメタ文字が威力を発揮するのは、「データがある時もないときもマッチさせる時」です。たとえば個人情報や履歴書などによくある資格の欄で、

資格:.*

と書くと、資格のある人は.の繰り返しでマッチします。また、資格が無く空欄の人も.の0回の繰り返し、つまり何もないためマッチします。

 また、量指定の正規表現はグループ化を行うことでより便利に使えます。さきほどのbomの例で言うと、bo*mの正規表現はbmやbooomはマッチさせることができますが、bobomやbobobobomという単語にはマッチさせることができません。そこで、「()」を使用してグループ化を行います。

(bo)*m

こう表記すると、boがひとまとまりとして認識され、「boの0回以上の繰り返し」という意味になります。ただし、boが無くてもいいという意味なので、単なる「m」にもマッチします。また、(bo)*と書くと、空文字にもマッチしてしまうので注意が必要です。

  • 練習問題へ

  • ○+
    意味:○の1回以上の繰り返し

     「+」(プラス)は直前の文字が1回以上繰り返されるものを指定するメタ文字です。

    bo+m

    こう書くと、oが1個以上あるものを探し出すことができます。

    bom
    boom
    booooooom

    今回は少なくともoが1個は無くてはならないため、bmという単語はマッチしません。


    ○?
    意味:○が0回または1回あること

     「?」(クエスチョンマーク)は直前の文字が0回または1回あることを示しています。たとえば、

    cars?

    と書くと、マッチする単語は

    car
    cars

    となります。もちろん、()によるグループ化も行えるため、sun(ny)?と書けば、sunもsunnyもマッチさせることができます。


    ページの一番上へ トップへ戻る