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 I was expecting m.begin(1) to return 2 since X is two elements after the beginning of string.
I am reading the book well grounded rubyist which says
To get the information for capture n, you provide n as the argument to begin and/or end.
Similarly I was expecing m.begin(2) to rerturn 3.