原です。

|なひです.

|> これだと、 a = "x\\_" でうまくいかないみたいですね。
|
|うはー.難しい.
|
|対処療法で,こんなんでどうでしょう...最後の「_」→「(?:_|$)」.
|
|  a.gsub( /([^\\_]*(?:\\.[^\\_]*)*)(?:_|$)/, '\1 ' )

やはり、a = "x\\_" で "x\\_  " となってしまいました。(^^;
$ が空文字列にマッチするからですね。