re = /("(post\s*(office)?)?\s*box\s*[#-]?\s*(\d+)?"|"[\w\s]*?p(ost)?\s*[.-]?\s*o?\s*\.?\s*b?(ox)?\.?\s*(\d+)?"|"\s*number\s*\d+")/im
str = ' "Box 123", "Box-122", "Box122", "HC73 P.O. Box 217", "P O Box125", "P. O. Box", "P.O 123", "P.O. Box 123", "P.O. Box", "P.O.B 123", "P.O.B. 123", "P.O.B.", "POB 123", "POB", "POBOX123", "Po Box", "Post 123", "Post Box 123", "Post Office Box 123", "Post Office Box", "box #123", "box 122", "box 123", "number 123", "p box", "p-o box", "post office box"
"The Postal Road", "Box Hill", "123 Some Street", "Controller\'s Office", "pollo St.", "123 box canyon rd", "777 Post Oak Blvd", "PSC 477 Box 396", "RR 1 Box 1020"'
subst = ''
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