Ruby global match regexp?

You can use the scan method. The scan method will either give you an array of all the matches or, if you pass it a block, pass each match to the block.

"hello1 hello2".scan(/(hello\d+)/)   # => [["hello1"], ["hello2"]]

"hello1 hello2".scan(/(hello\d+)/).each do|m|
  puts m
end

I've written about this method, you can read about it here near the end of the article.


Here's a tip for anyone looking for a way to replace all regex matches with something else.

Rather than the //g flag and one substitution method like many other languages, Ruby uses two different methods instead.

# .sub — Replace the first
"ABABA".sub(/B/, '') # AABA

# .gsub — Replace all
"ABABA".gsub(/B/, '') # AAA

use String#scan. It will return an array of each match, or you can pass a block and it will be called with each match.

All the details at http://ruby-doc.org/core/classes/String.html#M000812