(1)582さん、ありがとうございます。なるほど、こりゃあいいです。
last_matchですか。勉強になります。
begin(0)はカッコがなくても、マッチの先頭のオフセットを返すんですね。
スタート位置付きのindexを使ってaから直接取ってくるのもあるかと
思ったんですが、なるほどですね。

(2)もひとつ教えてほしいのですが、
a.scan(/./s) do |item|
string_array.push item
end
みたいにして全角文字を含む配列を使おうとしています。
これに対応して、stringクラスで、全角文字を1と数えるような
indexはあるんでしょうか。byte単位で判定するから、そもそも無理ですか。
なにせ日本生まれのrubyですから、ひょっとしてそういうサービスもあるかと
思いまして。