2012-11-27 8 views
5

To powinno być łatwe pytanie, ale nie mogę nic na ten temat znaleźć.Znajdź zarówno wzór, jak i pozycję wielu dopasowań wyrażenia regularnego w Ruby

Biorąc pod uwagę wyrażenie regularne w Ruby, dla każdego meczu muszę pobrać dopasowane wzorce $1, $2, ale potrzebuję również pasującej pozycji.

Wiem, że operator =~ daje mi pozycję pierwszego meczu, a string.scan(/regex/) daje mi wszystkie pasujące wzory. Jeśli to możliwe, muszę mieć oba wyniki w tym samym kroku.

Odpowiedz

9

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 
+1

Awesome! Dziękuję Ci! – Emyl

2

można uzyskać dostęp do danych w ciągu meczu skanowania tak:

"abcdefghij".scan(/\w/) {p $~} 
Powiązane problemy