rubyのscanはブロック無のほうが便利
String.scan(re){ブロック}がstringを返すのでStringオブジェクトを拡張した。
class String def scanA(exp) # scan(re)ブロック無しと同じ r=[] scan(exp){|i|r.push(yield i)} r end end
そしたら。ブロックなしのscan(re)は返り値が配列だったorz
>> "abcde".scan(/../) => ["ab", "cd"] >> "abcdefghi".scan(/(..)./) => [["ab"], ["de"], ["gh"]] >> "abcdefghi".scan(/(..)(.)/) => [["ab", "c"], ["de", "f"], ["gh", "i"]]