scan(pattern) -> [String] | [[String]]
[permalink][rdoc]self に対して pattern を繰り返しマッチし、マッチした部分文字列の配列を返します。
pattern が正規表現で括弧を含む場合は、括弧で括られたパターンにマッチした部分文字列の配列の配列を返します。
p "foobar".scan(/../) # => ["fo", "ob", "ar"]
p "foobar".scan("o") # => ["o", "o"]
p "foobarbazfoobarbaz".scan(/ba./) # => ["bar", "baz", "bar", "baz"]
p "foobar".scan(/(.)/) # => [["f"], ["o"], ["o"], ["b"], ["a"], ["r"]]
p "foobarbazfoobarbaz".scan(/(ba)(.)/) # => [["ba", "r"], ["ba", "z"], ["ba", "r"], ["ba", "z"]]
scan(pattern) {|s| ... } -> self
[permalink][rdoc]pattern がマッチした部分文字列をブロックに渡して実行します。 pattern が正規表現で括弧を含む場合は、括弧で括られたパターンにマッチした文字列の配列を渡します。
"foobarbazfoobarbaz".scan(/ba./) {|s| p s }
# => "bar"
# "baz"
# "baz"
# "baz"
"foobarbazfoobarbaz".scan("ba") {|s| p s }
# => "ba"
# "ba"
# "ba"
# "ba"
"foobarbazfoobarbaz".scan(/(ba)(.)/) {|s| p s }
# => ["ba", "r"]
# ["ba", "z"]
# ["ba", "r"]
# ["ba", "z"]