Ruby正则表达式捕获gsub中的组

Mar*_*her 2 ruby regex gsub

假设我想切换消息中的每个字母,并将其放在反向字母表中.为什么我似乎无法使用捕获的组并在一个gsub中执行此操作?

也许有人可以解释一下在gsub中使用捕获的组,可以反向引用是否裸露(没有'')?我可以使用#{\ 1}吗?

def decode(message)
  a = ('a'..'z').to_a
  z = a.reverse
  message.gsub!(/([[:alpha:]])/, z[a.index('\1')]) 
end

decode("the quick brown fox")
Run Code Online (Sandbox Code Playgroud)

tad*_*man 7

请记住,立即计算方法的参数,并将结果传递给方法.如果你想让替换适应匹配:

message.gsub!(/([[:alpha:]])/) { |m| z[a.index($1)] }
Run Code Online (Sandbox Code Playgroud)

它使用一个块来评估每个匹配.