ruby - Ruby String#gsub 中反向引用的意外行为

标签 ruby string gsub

所以我觉得这很奇怪:

"x'y".gsub("'", "\\'")
=> "xyy" 

变体,

'x"y'.gsub('"', "\'")
=> "x'y" 

工作正常。

这要么是一个错误(不太可能),要么是 Ruby 如何处理我不理解的反向引用。谁能解释第一种情况下会发生什么?

最佳答案

\' 表示 $' 是匹配后的所有内容。
(或)
\' 在 gsub 替换中表示 “匹配后的字符串的一部分。”

再次转义 \ 就可以了,

"x'y".gsub("'", "\\\\'")

你也可以在这里使用%q分隔符

"x'y".gsub("'", %q(\\\'))  

//(IRB uses \\ to make an escape-\ visible)

引用自 Gsub wierd behaviour

关于ruby - Ruby String#gsub 中反向引用的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38637449/

相关文章:

ruby-on-rails - Rails - 在重定向时将变量传递给不同的页面

ruby-on-rails - rspec 中的实例变量如何工作?

c# - 获取2个字符串之间的差异

elasticsearch - 如何在Logstash中使用grok或gsub删除特定单词之前的字符串部分?

regex - 如何替换r中某列中字符串的第n个字符

Ruby 正则表达式\1 对 gsub 意味着什么

ruby - 有没有更简洁的方法在 Ruby 中调用 map 上的外部方法?

ruby - 如何降级 jekyll 以使用 github 页面?

Mysql使用正则表达式替换

python - 如何将一串空格分隔的数字拆分为整数?