Ruby初心者である私が、いろいろと奮闘している途中で学んだことその1。
正規表現で文字列を抜き出す際に名前付きキャプチャがすごい便利だった。
ここに詳しく書いている
例えば
test = '2015/01/01'
こんな日付があったとして、年月日を試しに正規表現で探してみる。
regex1 = /(\d{4})\/(\d{2})\/(\d{2})/
regex1 =~ test
puts $1 #=>2015
puts $2 #=>01
puts $3 #=>31
このように$1
とか$2
とかの特別な変数にマッチした順に値が入る。
名前付きキャプチャを使うことでより分かりやすくかけるようになる。
regex2 = /(?<year>\d{4})\/(?<month>(\d{2}))\/(?<date>(\d{2}))/
regex2 =~ test
puts Regexp.last_match[:year] rescue nil #=>2015
puts Regexp.last_match[:month] rescue nil #=>01
puts Regexp.last_match[:date] rescue nil #=>31
?<name>
とかで指定すると直後の括弧でくくった部分にマッチした場合、name
という変数名に自動的にセットされる。
具体的な変数名で処理が書けるので見やすくなった。