re = /(?<=(?:\s|\.|_|\-|\+|\(|\[))(?:19[2-9]|20[0-2])\d(?=\s|$|\.|_|\-|\+|\)|\])/m
str = '1919
1920
1999
2001
2029
2030
Mute 2018 1080p NF WEB
Mute.2018.1080p.NF.WEB
Mute_2018_1080p NF WEB
Mute-2018-1080p
Mute(2018)1080p
Mute[2018]1080p
Mute+2018+1080p
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
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