>>489
だから内側のカッコは2回マッチしてるんだってば。
最終的な $~ は最後のマッチが有効になる。

これなら分かる?
$ ruby -e 'p /((ba*)*)/.match("bab").to_a'
["bab", "bab", "b"]