連続する空白(改行含む)のパターンマッチではまる
実際にはJavaScriptで書いててはまったのですが。
my $blk_str = " aaa"; $blk_str =~ s/^\s+?//g; # こっちだと最初の一つ目の\sだけにマッチ #$blk_str =~ s/^\s+//g; # こっちだと連続する\sにマッチ print $blk_str.$/; my $num_str = "12345aaa"; $num_str =~ s/\d+?//g; print $num_str.$/; my $wrd_str = "hogefoovar"; $wrd_str =~ s/\w+?//g; print $wrd_str.$/;
結果は以下の通り。
[webmaster@localhost dev]$ ./test.pl aaa aaa [webmaster@localhost dev]$
一年位前にも類似で以下のような正規表現ではまったことがありました。
http://d.hatena.ne.jp/srkzhr/20080417/1208436811
my $str = 'http://d.hatena.ne.jp/srkzhr/20080417/1208416359'; print "$1,$2\n" if $str =~ m{http://.+?/.+?/(\d+?)/(\d+?)}; # -> 20080417,1
「空白・改行が絡んでくる場合、最短マッチは要注意」という感じなのかな。