最短でマッチする繰り返しパターンで落とし穴
my $str = 'http://d.hatena.ne.jp/srkzhr/20080417/1208416359';
こんな文字列があったとしてスラッシュ区切りで末尾から二つの数字続きの塊を別々にとろうとすると
print "$1,$2\n" if $str =~ m{http://.+?/.+?/(\d+?)/(\d+?)}; print "$1,$2\n" if $str =~ m{http://.+?/.+?/(\d+?)/(\d+)};
上段と下段の正規表現では、出力結果が異なります。
20080417,1 20080417,1208416359
上段のやり方だと「1208416359」の部分は「1208416359」の中で最短=つまり、頭の「1」だけにマッチしてしまうようで。