私はこれをやろうとしています
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/, '\\\1')
この出力を取得するには
"love\{ \}&\\abbc\+"
しかし、私は得ています
"love\\1 \\1\\1\abbc\\1"
irbで。私は何を間違っていますか(ルビー1.8.7)?
ブロックフォームを試してみませんか?
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/) { |m| "\\#{m}" }
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/, "\\\\\\1")
追加のエスケープが必要な理由については、http://www.ruby-forum.com/topic/143645を参照してください。