4
我有一個很長的字符串,格式化爲一個日誌條目,並且希望從它獲取多個捕獲並將它們存儲在不同的變量中。在Ruby Regex中使用超過9個未命名的捕獲
我知道Ruby將前9個捕獲存儲到變量$ 1 ... $ 9中,它是否還將其他捕獲存儲在$ 10 ... $ 99中?
如果不是什麼將是一個簡單的方法來做到這一點?
我有一個很長的字符串,格式化爲一個日誌條目,並且希望從它獲取多個捕獲並將它們存儲在不同的變量中。在Ruby Regex中使用超過9個未命名的捕獲
我知道Ruby將前9個捕獲存儲到變量$ 1 ... $ 9中,它是否還將其他捕獲存儲在$ 10 ... $ 99中?
如果不是什麼將是一個簡單的方法來做到這一點?
是的,它的作用。
"a2c4d7l4l0j4h9h7".gsub(/(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)(\w)(\d)/) do
$12
end
#=> "4"
String#match
返回MatchData
保存捕獲數組的對象。
m = Regexp.new('(.)' * 20).match('The quick brown fox jumps over the lazy dog')
m[12]
# => "r"
雖然$ 12也適用:
> $12
# => "r"
難道你不能使用命名捕獲? –
當你嘗試時會發生什麼? – DavidO
爲什麼你將它限制爲'99'?我認爲它更可能不受限制或僅限於一位數字,而不限於兩位數字。限制爲兩位數字的基數少於限制爲一位數字。 – sawa