Из gsub
документов:
Если замена - это строка, она будет заменена на соответствующую
текст. Может содержать обратные ссылки на группы захвата шаблона
вида \ d, где d это номер группы, или \ k, где n это номер
имя группы. Если это строка в двойных кавычках, обе обратные ссылки должны
должен предшествовать дополнительный обратный слеш.
Это означает, что следующие 3 версии будут работать
>> "some3random5string8".gsub(/(\d)/, '\1 ')
=> "some3 random5 string8 "
>> "some3random5string8".gsub(/(\d)/, "\\1 ")
=> "some3 random5 string8 "
>> "some3random5string8".gsub(/(?<digit>\d)/, '\k<digit> ')
=> "some3 random5 string8 "
Редактировать: также, если вы не хотите добавлять дополнительный пробел в конце, используйте отрицательный прогноз на конец строки, например ::
>> "some3random5string8".gsub(/(\d(?!$))/, '\1 ')
=> "some3 random5 string8"
Положительная проверка «слова» также бы сработала:
>> "some3random5string8".gsub(/(\d(?=\w))/, '\1 ')
=> "some3 random5 string8"
Последняя, но не менее важная версия, без пробела в конце:
>> "some3random5string8".gsub(/(\d)(\w)/, '\1 \2')
=> "some3 random5 string8"