Если вам не нужны пробелы в разделителях, и вы хотите иметь согласованный дескриптор до / после, используйте это:
test = [
"4",
"Section 2",
"4 Section",
"Section 5 Aisle",
]
require 'pp'
pp test.map{ |str| str.split(/\s*(\d+)\s*/,-1) }
#=> [["", "4", ""],
#=> ["Section", "2", ""],
#=> ["", "4", "Section"],
#=> ["Section", "5", "Aisle"]]
Таким образом, вы всегда можете сделать:
prefix, digits, suffix = str.split(/\s*(\d+)\s*/,-1)
if prefix.empty?
...
end
... вместо проверки длины ваших матчей или чего-то подобного.