scan(p1) public

Both forms iterate through str, matching the pattern (which may be a Regexp or a String). For each match, a result is generated and either added to the result array or passed to the block. If the pattern contains no groups, each individual result consists of the matched string, $&. If the pattern contains groups, each individual result is itself an array containing one entry per group.

   a = "cruel world"
   a.scan(/\w+/)        #=> ["cruel", "world"]
   a.scan(/.../)        #=> ["cru", "el ", "wor"]
   a.scan(/(...)/)      #=> [["cru"], ["el "], ["wor"]]
   a.scan(/(..)(..)/)   #=> [["cr", "ue"], ["l ", "wo"]]

And the block form:

   a.scan(/\w+/) {|w| print "<<#{w}>> " }
   print "\n"
   a.scan(/(.)(.)/) {|x,y| print y, x }
   print "\n"

produces:

   <<cruel>> <<world>>
   rceu lowlr
Show source
Register or log in to add new notes.