原です。

すいません、

> print "abc".sub(/b?|b/){ "(#$&)" }, "\n"  # => (a)bc
> print "abc".sub(/c?|b/){ "(#$&)" }, "\n"  # => ()abc

は

print "abc".sub(/a?|a/){ "(#$&)" }, "\n"  # =>(a)bc
print "abc".sub(/b?|a/){ "(#$&)" }, "\n"  # =>()abc

の間違いです。^^;

ちなみに、

print "abc".sub(/a|b?/){ "(#$&)" }, "\n"  # =>(a)bc

です。
---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=--
                           Shin-ichro Hara(Nagaoka Univ.of Tech.)