プログラミング基礎

正規表現『.*』の意味について

正規表現『.*』の意味について

任意の文字列を検索します。

例えば 「正.*表現」で検索すると

「正表現」、「正表現」、「正お金持ちになりたい表現」、「正規表現正規表現表現」

などがヒットします。

「世紀表現」(”正”が、”表現”の前にない)

「正規品」(”表現”の前に”正”がない)

などはヒットしません。

 

実は『.*』という表現自体はなく

『.』・・・任意の1文字

『*』・・・直前の文字の0回以上の繰り返し

という正規表現を組み合わせたものです。

よく使われるので『.*』セットで覚えてしまうのが、良いと思います。

欲張りなマッチ?

上記の例で

「正.*表現」で検索すると

「正規表現正規表現表現」

がヒットすると紹介しましたが、

規表現正規表現表現」

上記の黄色の下線部分の時点ですでにマッチしているので、検索結果は「表現」が正しいのではないか?

という疑問があると思います。

実は「*」は”欲張りなマッチ”(または貪欲なマッチ)という意味合いがあり、1度検索がヒットしても最後まで検索し続けるようになっているのです。

 

1度だけ検索をヒットさせたい場合はどうするの?

でも、「正表現」までで検索を終了させたいときがあると思います。

そのときは「正.*?表現」と指定します。

「正規表現正規表現表現」

を検索すした場合、

「正表現」がヒットするようになります。

.*?」のような指定を”控えめのマッチ”と呼んでいます。

※ただし、正規表現の処理系によっては使えない場合もあるので、注意してください。