re = /(?:^(?:(\d+)')?(?:[-| ]*)(?:(\d*(?: ?\d+\/\d+)?|(?:\d*\.\d+)?)?")?$)/mi
str = '5\'-2 1/2"
5\' -2 1/2"
5\' 4 2/3"
5\'-4"
5\'3 1/4"
4"
1/8"
5\'-3.25"
5\' 3.25"
5\'3.25"
3.25"
.25"
345\'-12.318"'
# 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