もう面倒だから、エスケープの内部でしか発生しないとヤマを張ってあらかじめ張っておく。
違っていた場合はもう知らね。

自分の前に書いたコードから正規表現の部分だけ変えてくれ。

"'(!'|[^'])*'|\\ +|(\\\\[\\+\\-]?|[+#X-])[^'\\\\ +#X-]*|[^'\\\\ +#X-]+"

文字列のマッチしかしないんで!'の置換は適当にString.replaceでも呼んでやっといてくれ。