В тех случаях, когда строка не соответствует выражению, numResults
будет nil
так что если это то, что вы тестируете, вы захотите
while( !numResults.nil? ){
}
В случаях, когда строка соответствует совпадению с выражением, numResults
не будет nil
и, кроме того, будет содержать количество совпадений (только 1, самое большее, потому что вы этого не делаете есть повторяющееся совпадение) в numResults.size
Кроме того, другие авторы должны помнить, что numResults
не содержит числа найденных совпадений, но содержит значение фактического совпадения из текстовых данных.
Пока
numResults.to_s.to_i
Мог бы сработать, только благодаря милости nil.to_s.to_i == 0
.
Если вы полагались на numResults
как на что-то значимое с точки зрения количества совпадений с регулярным выражением, вы искали не в том месте.