- ベストアンサー
perlの正規表現で量指定子を繰り返す意味
perlの正規表現で量指定子を繰り返す意味 とあるブログのプラグインのコードを読んでいて不思議に 思ったことがあります。 .* このような正規表現は良く見るのですが、 .*? というような表現を見て不思議に思っています。 この場合、まず「.」で改行以外の一文字が、「*」0個以上ある、 その後の「?」によって「0個または1個」となると思いますが、 これだと「*」の意味がないように思います。 こういった量指定子を繰り返すことにどういう意味があるのか 最初から「.?」ではなぜいけないのか、教えていただけませんか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「*?」の「?」は単独の量指定子ではなく「*」に対するオプション指定です。 「*」の場合は最長マッチになるのに対し、 「*?」で最短マッチになります。 つまり、たとえば、「abcabcabc」という文字列に対して、 「a.*a」は「abcabca」にマッチしますが、 「a.*?a」は「abca」にマッチします。
お礼
ご回答ありがとうございます。 オプション指定ですか。勉強になりました。 おかげさまで納得して読み進めることができそうです。 ありがとうございました。