The beginning of your regex is: /^(\d+\s+)/, which says:
match the beginning of the string, then some digits, then
whitespace. But your string starts with a digit, then a dot.
Uhm, no, that doesn't mean it. \d+ matches a string of digits.
If you want to match different type of numbers (decimal numbers, integers, reals, etc), you need different regexes.
See the FAQ, or Regexp::Common.