我有一个长字符串格式化为日志条目,我希望从中获取多个捕获并将它们存储在不同的变量中。
我知道Ruby将前9个捕获存储到变量$ 1 ... $ 9中,是否还存储了10美元...... 99美元的其他捕获?
如果不是这样做的简单方法呢?
答案 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"