【问题标题】:Unexpected behavior of backreferences in Ruby String#gsubRuby String#gsub 中反向引用的意外行为
【发布时间】:2016-12-02 21:49:58
【问题描述】:

所以我觉得这很奇怪:

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

变体,

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

工作得很好。

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

【问题讨论】:

    标签: ruby string gsub


    【解决方案1】:

    \' 表示$',即比赛结束后的所有内容。
    (或)
    \' 在 gsub 替换中表示 “匹配后的部分字符串。”

    再次转义 \ 即可,

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

    你也可以在这里使用%q delimiters

    "x'y".gsub("'", %q(\\\'))  
    
    //(IRB uses \\ to make an escape-\ visible)
    

    转自Gsub wierd behaviour

    【讨论】:

    • 你知道这是否记录在任何地方吗? sub 的文档甚至说 [..] but is actually not a pattern capture group e.g. "\'", then it will have to be preceded by two backslashes like so "\\'"
    • 我也没有在任何地方得到正确的文档,但是因为我们需要转义转义字符和单引号,所以应该在那里使用 4 个反斜杠。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2017-02-01
    • 2014-07-24
    • 1970-01-01
    相关资源
    最近更新 更多