だから([0-90-9]+)(-([0-90-9]+))?の?は、
後半があれば必ず長い方に一致させるから
心配しなくていい。

前後の([^\;]|^)や([^<-]|$)が、lineに格納されたスペースを食っちゃってる
ようだけど。