在Ruby Regex中使用超过9个未命名的捕获

时间:2012-10-21 16:11:22

标签: ruby regex

我有一个长字符串格式化为日志条目,我希望从中获取多个捕获并将它们存储在不同的变量中。

我知道Ruby将前9个捕获存储到变量$ 1 ... $ 9中,是否还存储了10美元...... 99美元的其他捕获?

如果不是这样做的简单方法呢?

2 个答案:

答案 0 :(得分:8)

String#match返回MatchData对象,其中包含一系列捕获。

m = Regexp.new('(.)' * 20).match('The quick brown fox jumps over the lazy dog')
m[12]
# => "r" 

虽然12美元也有效:

> $12
# => "r" 

答案 1 :(得分:6)

是的,确实如此。

"a2c4d7l4l0j4h9h7".gsub(/(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)/) do
  $12
end
#=> "4"