• ベストアンサー

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

perlの正規表現で量指定子を繰り返す意味 とあるブログのプラグインのコードを読んでいて不思議に 思ったことがあります。 .* このような正規表現は良く見るのですが、 .*? というような表現を見て不思議に思っています。 この場合、まず「.」で改行以外の一文字が、「*」0個以上ある、 その後の「?」によって「0個または1個」となると思いますが、 これだと「*」の意味がないように思います。 こういった量指定子を繰り返すことにどういう意味があるのか 最初から「.?」ではなぜいけないのか、教えていただけませんか。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

「*?」の「?」は単独の量指定子ではなく「*」に対するオプション指定です。 「*」の場合は最長マッチになるのに対し、 「*?」で最短マッチになります。 つまり、たとえば、「abcabcabc」という文字列に対して、 「a.*a」は「abcabca」にマッチしますが、 「a.*?a」は「abca」にマッチします。

angband
質問者

お礼

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

関連するQ&A

専門家に質問してみよう