電子書籍の厳選無料作品が豊富!

perlの正規表現で量指定子を繰り返す意味

とあるブログのプラグインのコードを読んでいて不思議に
思ったことがあります。

.*

このような正規表現は良く見るのですが、

.*?

というような表現を見て不思議に思っています。
この場合、まず「.」で改行以外の一文字が、「*」0個以上ある、
その後の「?」によって「0個または1個」となると思いますが、
これだと「*」の意味がないように思います。

こういった量指定子を繰り返すことにどういう意味があるのか
最初から「.?」ではなぜいけないのか、教えていただけませんか。

A 回答 (1件)

「*?」の「?」は単独の量指定子ではなく「*」に対するオプション指定です。



「*」の場合は最長マッチになるのに対し、
「*?」で最短マッチになります。

つまり、たとえば、「abcabcabc」という文字列に対して、
「a.*a」は「abcabca」にマッチしますが、
「a.*?a」は「abca」にマッチします。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

オプション指定ですか。勉強になりました。
おかげさまで納得して読み進めることができそうです。
ありがとうございました。

お礼日時:2010/08/08 23:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!