>>176
Java はまったくわかりませんが、
>\+がうまくいかないです。
の参考になるかもしれないので、名前だけ Java に似てる JavaScript で書いてみました。

javascript:alert('\"'+'TOP\\+123+123 \\-123-123\\'.match(/((^| +|#|X|\\?\+|\\?-|\\)[^\3]*?)(?= |#|X|\\?\+|\\?-|\\|$)/g).join('\"\n\"')+'\"\n');

ブラウザのアドレスバーに入れると確認できます。