re = /(^(\d{1,2})\/(\d{4})(.*))|(^(\d{1,2})\/(\d{1,2})\/(\d{4})(.*))|(^(\d{4})\/(\d{1,2})\/(\d{1,2})(.*))/m
str = '1/2016
1/2016 1122:344z
01/2016 1122:344 am
01/02/2016 1122:344 pm
1/02/2016 1122:344
01/2/2016 1122:344
1/2/2016 1122:344
2016/01/02 1122:344
2016/1/02 1122:344
2016/01/2 1122:344
2016/1/2 1122:344
2016/01/27 1122:344
2017/01/30 1122:344
'
subst = '$2/$3 $6/$8 $12/$11'
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