gpt4 book ai didi

ruby - 如何用双反斜杠替换反斜杠?

转载 作者:数据小太阳 更新时间:2023-10-29 06:33:31 24 4
gpt4 key购买 nike

我正在尝试用两个反斜杠替换字符串中的反斜杠,如下所示:

str.gsub!("\\", "\\\\")

但是,它什么也没做。我很困惑...

最佳答案

Note that this answer was givin in the contect of ruby 1.9. As ruby 2.0 has a new regex engine it might not be valid in that context.

这个有效:

str.gsub!("\\", "\\\\\\") 
str.gsub!("\\", "\\\\\\\\") # also, will always work

编辑:解释(通过@vache 提供的http://www.ruby-forum.com/topic/143645)

免责声明:我不熟悉 ruby​​ 正则表达式引擎的内部工作原理,这里的任何信息都是从上面提到的文章中扣除的。

要知道的基本知识是替换字符串被计算了 2 次。

斜线第一次在字符串中作为转义符执行它们的工作,第二次 gsub 将在字符串中搜索组引用。

如@chris-johnsen 所述,6 个斜杠并不总是有效。这让我相信这样的事情正在发生:

对于 6 个斜线。 3 个斜线传递给组引用层。尾部斜杠不被解释为转义字符,因为它后面没有任何内容,它被解释为反斜杠。所以最后这一层返回 2 个斜杠。如果后面有任何东西,表达式将失败,因为第三个斜杠现在将用作转义字符。

For 8 slashes: 4个斜线被传递给group reference layer。四个斜线将依次减少为两个。

关于ruby - 如何用双反斜杠替换反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6209480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com