This should be an easy question but I can't find anything about it.
Given a regular expression in Ruby, for every match I need to retrieve the matched patterns $1
, $2
, but I also need the matching position.
I know that the =~
operator gives me the position of the first match, while string.scan(/regex/)
gives me all matching patterns. If possible I need to have both results in the same step.
MatchData
string.scan(regex) do
$1 # Pattern at first position
$2 # Pattern at second position
$~.offset(1) # Starting and ending position of $1
$~.offset(2) # Starting and ending position of $2
end
You can access match data within scan like this:
"abcdefghij".scan(/\w/) {p $~}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With