re = /^.*(([\w\d]{5}-?){3}).*$/mi
str = '12 DIG ARTIFEX Bundle 3 9 Clues 2: The Ward STEAM 5MQ7W-N7PAT-V0QQL YES Mark as used
13 DIG ARTIFEX Bundle 3 9 Clues: The Secret of Serpent Creek STEAM PEMFX-48T80-20ANW YES Mark as used
14 DIG Super Bundle 76 HellAngel STEAM FENFR-LQ0N3-TNLR0 YES Mark as used
1 DIG Points Purchase Monsti STEAM BCI7T-Z9P4Q-LGJ9T YES Mark as used
2 DIG Super Bundle 74 Wooden Floor 2 - Resurrection STEAM LPL6L-2LJ74-GWG3W YES
3 DIG Super Bundle 74 Warriors of Vilvatikta STEAM 90LPI-T5KC2-C4W6M YES
4 DIG Super Bundle 74 Final Quest STEAM IJRID-JYGH3-3M5C7 YES
5 DIG Super Bundle 74 Gold Rush! - Anniversary STEAM 6D7DA-8EZZP-DET6A YES
6 DIG Super Bundle 75 Sleeping Valley STEAM 8AFHR-C0X43-DAG74 YES '
subst = '$1'
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