Ruby 替换为';使用\';在双引号字符串中
任务很简单-我有一个字符串,比如Ruby 替换为';使用\';在双引号字符串中,ruby,regex,Ruby,Regex,任务很简单-我有一个字符串,比如“我不知道”,我想用\替换'(我知道我不必转义单引号)。我怎么做 尝试使用块形式,它应该适用于所有版本的Ruby: s.gsub(/'/) {"\\'"} # => "I don\\'t know" [编辑] 原因是对替换字符串中对应于特殊匹配变量的反斜杠序列具有特殊处理。因此,您可以在替换字符串中直接使用$'(和$1等),而不是使用\\'(和\\1等)格式 gsub的块形式没有这种行为,因此当您试图在一个看起来像特殊反斜杠序列的字符串中细分时,这是一种解
“我不知道”
,我想用\
替换'
(我知道我不必转义单引号)。我怎么做 尝试使用块形式,它应该适用于所有版本的Ruby:
s.gsub(/'/) {"\\'"}
# => "I don\\'t know"
[编辑]
原因是对替换字符串中对应于特殊匹配变量的反斜杠序列具有特殊处理。因此,您可以在替换字符串中直接使用$'
(和$1
等),而不是使用\\'
(和\\1
等)格式
gsub的块形式没有这种行为,因此当您试图在一个看起来像特殊反斜杠序列的字符串中细分时,这是一种解决方法。还有
s.gsub(/'/,'\'''))
或s.gsub(/',“\\'')
。但是@maerics更清楚。我猜当你做s.gsub(/“/”,“\\\”)时,它会以某种方式匹配$”
值。对吗?@Bohdan:对,在替换字符串中,你可以使用转义形式(\\'
,$1
)来使用一些特殊的匹配变量(例如$,\\\'
)但是gsub的块形式没有类似的“便利性”=)问题@chown:nah,这个问题是关于gsub如何解释替换字符串中带有转义前缀的特殊匹配变量。@maerics Yea,可能不是重复的,但类似。