タイトルが意味不明なのでとりあえず下のコードを見て欲しいです。
まずrubyではcase文の条件に正規表現が使えます。
そこで、caseでStringを渡し、whenを正規表現で表し、さらに分岐後にそのマッチ部分を使いたいといったとき以下のように書いていました。
message = "2015年05月01日"
case message
when /\d{4}年\d{2}月\d{2}日/
m = message.match(/(\d{4})年(\d{2})月(\d{2})日/)
puts "#{m[1]}/#{m[2]}/#{m[3]}" # => 2015/05/01
else
puts "not match."
end
これだと正規表現の部分が冗長だし、なにより全然rubyっぽくない。
そこで、$1, $2, ... という特殊変数はキャプチャーされた部分文字列が格納されるので、これを使うことでかなりシンプルになります。
message = "2015年05月01日"
case message
when /(\d{4})年(\d{2})月(\d{2})日/
puts "#{$1}/#{$2}/#{$3}" # => 2015/05/01
else
puts "not match."
end
他にも良い書き方がありましたらコメントでお知らせください。
参考