真空マッチ (1)
http://www.siaris.net/index.cgi/Programming/LanguageBits/Ruby/Oniguruma.rdoc/style/print
この中で、ruby、鬼車、perlの仕様の違いが指摘されていた。
$ sruby -e '"abax" =~ /((a)*(b)*)*/; print #{$&}:#{$1}:#{$2}:#{$3}\n"' aba::a:b $ oruby -e '"abax" =~ /((a)*(b)*)*/; print "#{$&}:#{$1}:#{$2}:#{$3}\n"' aba::a:b $ perl -e '"abax" =~ /((a)*(b)*)*/; print "#{$&}:#{$1}:#{$2}:#{$3}\n"' #{aba}:#{}:#{}:#{}
perlの$2, $3の値が、マッチしていないという意味の空であれば正しいと思うが、空文字列''なら正しいとは思わない。どちらの意味なのかは、perlに詳しくないのでわからない。
つまり、正しくて一番好ましいのは、$1 = '', $2 = nil, $3 = nilだろう。
ruby, 鬼車の結果である、$1 = '', $2 = 'a', $3 = 'b' は正しい。
$1 = '', $2 = '', $3 = '' であれば、正しくない。