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