1

我正在尝试这样做

"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/, '\\\1')

得到这个输出

"love\{ \}&\\abbc\+"

但我得到

"love\\1 \\1\\1\abbc\\1"

在 irb. 我做错了什么(红宝石1.8.7)?

4

2 回答 2

1
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/, "\\\\\\1")

请参阅http://www.ruby-forum.com/topic/143645了解为什么所有额外的转义是必要的。

于 2012-07-19T10:54:46.733 回答
1

试试块形式吧?

"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/) { |m| "\\#{m}" } 
于 2012-07-19T10:57:13.093 回答