Rubyのif文とcase文で正規表現を用いたときの違い
開発環境はWindows7 Professional(32bit) + ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]。
case文を用いていたら、思ったように動作しなかったのでメモしておく。
# -*- coding: utf-8 -*- url = "http://k01ken.hatenablog.com/" case url when /^http:\/\/k01ken\.hatenablog\.com/.match(url) p true else p false end if /^http:\/\/k01ken\.hatenablog\.com/.match(url) p true else p false end
実行結果
1つ目はfalseになり、2つ目はtrueになる。
case文ではどうやら、対象となる数値や文字列が完全に一致しないと一致したことにはならないみたいだ。
参考リンク
正規表現 (Ruby 2.5.0)
Rubyのcaseを〇〇(言語名)のswitch文だと思っている人たちにぼくから一言ガツンと申し上げたい
case文の条件で正規表現を使って内部でマッチ部分を使いたいとき
Ruby の case 文
instance method Regexp#match (Ruby 2.5.0)