Если у вас много полей в инструкции select, и вы хотите получить последнее значение для всех этих полей с помощью оптимизированного кода:
select * from
(select * from table_name
order by id,rev desc) temp
group by id
Вы должны удалить группы захвата или сделать их не захватывающими:
text = " -45.124, 1124.325"
puts text.scan(/[+-]?\d+(?:\.\d+)?/)
См. demo , вывод:
-45.124
1124.325
См. scan
documentation :
Если шаблон не содержит групп, каждый отдельный результат состоит из согласованной строки
blockquote>$&
. Если шаблон содержит группы, каждый отдельный результат сам по себе является массивом, содержащим одну запись для каждой группы.Ну, если вам также нужно сопоставить такие поплавки, как
.04
вы можете использовать[+-]?\d*\.?\d+
. См. еще одно демо
([+-]?\d+\.\d+)
предполагает, что перед десятичной точкой
есть ведущая цифра, см. демонстрацию в Rubular