This blog is part of our Ruby 2.4 series.
We can use MatchData#[] to extract named capture and positional capture
groups.
pattern=/(?<number>\d+) (?<word>\w+)/
pattern.match('100 thousand')[:number]
#=> "100"
pattern=/(\d+) (\w+)/
pattern.match('100 thousand')[2]
#=> "thousand"
Positional capture groups could also be extracted using MatchData#values_at.
pattern=/(\d+) (\w+)/
pattern.match('100 thousand').values_at(2)
#=> ["thousand"]
In Ruby 2.4, we can pass string or symbol to extract named capture groups to
method #values_at.
pattern=/(?<number>\d+) (?<word>\w+)/
pattern.match('100 thousand').values_at(:number)
#=> ["100"]

Written byRohit Kumar
Related blogs
- 01Ruby 2.4 has optimized enumerable min max methodsSeptember 28, 2017 · Chirag Shah
- 02CSV::Row#each etc. return enumerator when no block givenSeptember 25, 2017 · Sushant Mittal
- 03Ruby 2.4 DateTime#to_time & Time#to_time keeps infoSeptember 19, 2017 · Sushant Mittal
- 04Avoid exception for dup on IntegerAugust 1, 2017 · Rohit Arolkar