Ruby 2.4 MatchData#values_at

Rohit Kumar

By Rohit Kumar

on December 21, 2016

This blog is part of our  Ruby 2.4 series.

Ruby 2.3

We can use MatchData#[] to extract named capture and positional capture groups.

1
2pattern=/(?<number>\d+) (?<word>\w+)/
3pattern.match('100 thousand')[:number]
4#=> "100"
5
6pattern=/(\d+) (\w+)/
7pattern.match('100 thousand')[2]
8#=> "thousand"
9

Positional capture groups could also be extracted using MatchData#values_at.

1
2pattern=/(\d+) (\w+)/
3pattern.match('100 thousand').values_at(2)
4#=> ["thousand"]
5

Changes in Ruby 2.4

In Ruby 2.4, we can pass string or symbol to extract named capture groups to method #values_at.

1
2pattern=/(?<number>\d+) (?<word>\w+)/
3pattern.match('100 thousand').values_at(:number)
4#=> ["100"]
5

If you liked this blog, you might also like the other blogs we have written. Check out the full archive.

Stay up to date with our blogs. Sign up for our newsletter.

We write about Ruby on Rails, React.js, React Native, remote work,open source, engineering & design.