/** * call-seq: * rxp.scan(str) # => [matchdata1, matchdata2,...] or nil * rxp.scan(str) {|match_data| ... } # => [matchdata1, matchdata2,...] or nil * * Both forms iterate through _str_, matching the pattern. For each match, * a MatchData object is generated and passed to the block, and * added to the resulting array of MatchData objects. * * If _str_ does not match pattern, _nil_ is returned. * **/ static VALUE oregexp_m_scan(VALUE self, VALUE str) {