質問: perlの正規表現で量指定子を繰り返す意味 perlの正規表現で量指定子を繰り返す意味 とあるブログのプラグインのコードを読んでいて不思議に 思ったことがあります。 .* このような正規表現は良く見るのですが、 .*? というような表現を見て不思議に思っています。 この場合、まず「.」で改行以外の一文字が、「*」0個以上ある、 その後の「?」によって「0個または1個」となると思いますが、 これだと「*」の意味がないように思います。 こういった量指定子を繰り返すことにどういう意味があるのか 最初から「.?」ではなぜいけないのか、教えていただけませんか。
回答: 「*?」の「?」は単独の量指定子ではなく「*」に対するオプション指定です。 「*」の場合は最長マッチになるのに対し、 「*?」で最短マッチになります。 つまり、たとえば、「abcabcabc」という文字列に対して、 「a.*a」は「abcabca」にマッチしますが、 「a.*?a」は「abca」にマッチします。