Ruby regex scan versus = ~

Dokumentacja Ruby (1.9.3) wydaje się sugerować, że skanowanie jest równoważne = ~ z wyjątkiem tego

scan zwraca wiele dopasowań, podczas gdy = ~ zwraca tylko pierwsze wystąpienie, iscan zwraca dane dopasowania, podczas gdy = ~ zwraca indeks.

Jednak w poniższym przykładzie dwie metody wydają się zwracać różne wyniki dla tego samego ciągu i wyrażenia. Dlaczego?

<code>1.9.3p0 :002 > str = "Perl and Python - the two languages"
 => "Perl and Python - the two languages" 
1.9.3p0 :008 > exp = /P(erl|ython)/
 => /P(erl|ython)/ 
1.9.3p0 :009 > str =~ exp
 => 0 
1.9.3p0 :010 > str.scan exp
 => [["erl"], ["ython"]] 
</code>

Jeśli indeks pierwszego dopasowania ma wartość 0, nie powinien skanować zwracanych „Perl” i „Python” zamiast „erl” i „python”?

Dzięki

questionAnswers(1)

yourAnswerToTheQuestion