Я бы использовал что-то вроде
price = "Price for item is Rs. 100".scan(/(\d+\.\d+|\d+)/).flatten.last
Метод scan
возвращает массив, содержащий все совпадающие числа (из-за \d+
). Кроме того, вы всегда хотите, чтобы последний найденный действительный номер (оператор четвертый) фактически вам нужен последний элемент в массиве.
Это также учитывает случай № 3, в котором у вас есть поплавки.