>>388
基本的には「元の正規表現と等価である」というのが要件です.
a)の場合は元の数値を含んでいますが,それ以外の
03や12なども含んでしまいますから等価ではないと思います.
そのあたりの厳密性が要求されるのでb)が望ましいと言えます.

思いついたアルゴリズムとしては,|で区切った数値を
全て配列に書き出して,ソートして,一つ一つ取り出して,
連続しているようなら[ - ]で繋ぐという様なアルゴリズムで
やろうかなと思います.