m = /(.)(.)(\d+)(\d)/.match("THX1138.")
puts m[0]
c = m.captures #=> HX1138
puts c[0] #=> H
puts m.begin(0) #=> 1
puts c[1] #=> X
puts m.begin(1) #=> 1
puts c[2] #=> 113
puts m.begin(2) #=> 2
我期待m.begin(1)返回2,因为X是字符串开头后的两个元素。
我正在阅读书中提到的well grounded rubyist
获取捕获信息n, 你提供n作为开始的参数 和/或结束。
同样地,我在预测m.begin(2)以重新开始3。
答案 0 :(得分:8)
仔细阅读:
返回字符串中匹配数组的第n个元素的开头的偏移量。
所以匹配数组实际上是[HX1138,H,X,113,8]
SO
m.begin(0) => offset of HX1138 => 1 in "THX1138"
m.begin(1) => offset of H => 1 in "THX1138"
m.begin(2) => offset of X => 2 in "THX1138"