Ruby String#gsub 中反向引用的意外行为
Unexpected behavior of backreferences in Ruby String#gsub
所以我觉得这很奇怪:
"x'y".gsub("'", "\'")
=> "xyy"
变体,
'x"y'.gsub('"', "\'")
=> "x'y"
工作正常。
要么是错误(不太可能),要么是 Ruby 如何处理我不理解的反向引用。谁能解释一下第一种情况会发生什么?
\'
表示 $'
是匹配后的所有内容。
(或)
\'
在 gsub 替换中意味着 "part of the string after the match."
再次转义 \
并且有效,
"x'y".gsub("'", "\\'")
这里也可以用%q delimiters
,
"x'y".gsub("'", %q(\\'))
//(IRB uses \ to make an escape-\ visible)
引用自Gsub wierd behaviour
所以我觉得这很奇怪:
"x'y".gsub("'", "\'")
=> "xyy"
变体,
'x"y'.gsub('"', "\'")
=> "x'y"
工作正常。
要么是错误(不太可能),要么是 Ruby 如何处理我不理解的反向引用。谁能解释一下第一种情况会发生什么?
\'
表示 $'
是匹配后的所有内容。
(或)
\'
在 gsub 替换中意味着 "part of the string after the match."
再次转义 \
并且有效,
"x'y".gsub("'", "\\'")
这里也可以用%q delimiters
,
"x'y".gsub("'", %q(\\'))
//(IRB uses \ to make an escape-\ visible)
引用自Gsub wierd behaviour