re = /^{map:\h+geo="(?P<lat>-?\d+(?:\.\d+(?:,\d+)?)?),(?P<lon>-?\d+(?:\.\d+(?:,\d+)?)?)"[^}]+}/m
str = '{map: geo="20.471884,-157.505,6" p="Hawaii"}
{map: geo="-157.505,6,-20.471884,5" p="Hawaii"}
{map: geo="-157.505,6,20.471884" p="Hawaii"}
{map: geo="157,11111" p="Hawaii"}'
# 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