UTF8で\dが全角数字にマッチ
irb:0> /\d/ =~ "5" => 0 irb:0> /\d/.encoding => #<Encoding:US-ASCII> irb:0> /\d/n.encoding => #<Encoding:US-ASCII> irb:0> re = Regexp.new(/\d/.source.force_encoding(Encoding::ASCII_8BIT)) => /\d/ irb:0> re.encoding => #<Encoding:US-ASCII>
ぎゃーす.
irb:0> /\d(?:\x80(?!))?/n =~ "5".force_encoding(Encoding::ASCII_8BIT) => 0 irb:0> /\d(?:\x80(?!))?/n =~ "5".force_encoding(Encoding::ASCII_8BIT) => nil
いや,俺がしたいのはこうじゃないんだ.そもそもASCII_8BITは困る.
\wや\sもUnicodeかそうでないかで挙動が変わるらしいから要注意だ!
参考URL:
http://www.geocities.jp/kosako3/oniguruma/doc/RE.ja.txt