我正在尝试这样做
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/, '\\\1')
得到这个输出
"love\{ \}&\\abbc\+"
但我得到
"love\\1 \\1\\1\abbc\\1"
在 irb. 我做错了什么(红宝石1.8.7)?
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/, "\\\\\\1")
请参阅http://www.ruby-forum.com/topic/143645了解为什么所有额外的转义是必要的。
试试块形式吧?
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/) { |m| "\\#{m}" }