lazybios

加强版的MatchData#values_at方法 | Ruby 2.4

Ruby 2.3

通过MatchData#[]方法,我们可以借助分组别名、分组序号访问到所捕获的内容:

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

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

除上面的方法外,也可以使用MatchData#values_at根据分组的序号获取捕获内容。

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

Ruby 2.4

与前文的MatchData#[]一样,2.4中Ruby对values_at做了加强,不仅可以接受分组序号,还可以接受分组别名。

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

-完-

参考引用

微信关注「日拱一卒」公众号