Yukihiro Matsumotoさんの<1017384610.022846.10234.nullmailer / ev.netlab.jp>から
> |()の場合、内側の?も影響を与えることがあるのではないかと思います。
> |
> |p(/(.?)?/.match("")[1])  # => ""
> |p(/(.)?/.match("")[1])   # => nil
> 
> なるほどねえ。でも、使いやすさの観点からはそろえておいたほう
> がよいかもしれません。

エラーを出す条件をGNU regexに合わせました。
従って、どちらもエラーにはなりません。

但し、冗長な繰り返し演算子に対しては、Rubyのverboseモードでだけ
warningを出すようにしました。

/(?:a?)?/   # => warning
/(a?)?/     # => OK
/a????/     # => warning

などです。
--
小迫@ソフネック   渋谷区恵比寿1-15-1