1
我试图做到这一点具体的正则表达式替换不正确的反斜杠
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/, '\\\1')
得到这个输出
"love\{ \}&\\abbc\+"
但我在IRB越来越
"love\\1 \\1\\1\abbc\\1"
。 我做错了什么(红宝石1.8.7)?
我试图做到这一点具体的正则表达式替换不正确的反斜杠
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/, '\\\1')
得到这个输出
"love\{ \}&\\abbc\+"
但我在IRB越来越
"love\\1 \\1\\1\abbc\\1"
。 我做错了什么(红宝石1.8.7)?
尝试块形式也许?
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/) { |m| "\\#{m}" }
"love{ }&\abbc+".gsub(/([-\|!\(\)\{\}\[\]\^"~\*\?:\\&\+])/, "\\\\\\1")
对于为什么所有额外的转义是必要的说明,请参见http://www.ruby-forum.com/topic/143645。
你的'\ a'是否应该是反斜杠后跟'a'或'\ a'转义序列? – 2012-07-19 10:50:51
@ muistooshort:张贴你的答案(我可以发誓我试了五个反斜杠,它不起作用):) – 2012-07-19 10:52:40
@SergioTulentsev:我太累了,解释为什么需要这么多诅咒反斜杠,我从来没有满意简单的“做这个”答案没有解释。 – 2012-07-19 10:55:11