Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

正規表現のマッチ情報はlast_matchメソッドを使うようにする

正規表現のパターン一致を引っ張り出す時、どうしてますか?
私は$1を使う軟弱ものです。

/(as).*(you).*(like)/.match('as you like')
#=> #<MatchData "as you like" 1:"as" 2:"you" 3:"like">

> $1
#=> "as"
> $2
#=> "you"
> $3
#=> "like"
> $4
#=> nil

毎度お馴染みコーディング規則からすると、
上のようなパターンは古くさいので推奨されてないそうです。
...では、どうするのか?
last_matchメソッドを使います。

> Regexp.last_match
#=> #<MatchData "as you like" 1:"as" 2:"you" 3:"like">
> Regexp.last_match[0]
#=> "as you like"
> Regexp.last_match[1]
#=> "as"
> Regexp.last_match[2]
#=> "you"
> Regexp.last_match[3]
#=> "like"