re = /^(.*?)\s?(?|(?:dek[ae]t\s(.+)\sradius\s(\d+(?:\.\d+)?)\s?(k?m))|(?:dek[ae]t\s(.+)))/im
str = 'rumah dekat ugm
rumah dekat ugm radius 3 km
rumah dekat ugm radius 500m
rumah dekat sindu park radius 5 km
rumah dekat sindu park radius 1.5 km
rumah dekat De Mata Trick Eye Museum radius 12 km
apartemen dekat UII radius 2 km
dekat ugm radius 3 km'
# 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