re = /(M[1|2])?\s+(\D+)(\d{4})_(\d{4})/
str = 'M1 hello world 1234_5678 ip som lorem 9321_1231 iste natus error sit voluptatem 4313_4351 ratione voluptatem sequi nesciunt 4312_1234
M2 magnam aliquam 4351_3143 sed quia non numquam 3123_1432'
subst = '\\1\\t\\2\\t\\3\\n'
result = str.gsub(re, subst)
# Print the result of the substitution
puts result
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html