土曜日, 11月 18, 2006

最短マッチ

perl の正規表現で、たまに .*?  という表現を見かけることがあるが、
最後についている?の意味が分からず、結構悩んだ。

が、今日たまたま調べものをしている時に偶然意味を知った。この?は
Perl5で拡張された正規表現で、最短マッチを表すのだそうだ。

 "XZXZZ" =~ /X.*Z/;  →  "XZXZZ"にマッチする(最長マッチ)
 "XZXZZ" =~ /X.*?Z/; →  "XZ"にマッチする(最短マッチ)
 "XZXZZ" =~ /XZ+/;  →  "XZ"にマッチする

という感じ。