在Ruby gsub块(regex)中使用命名捕获组

Chr*_*ris 25 ruby regex gsub

我正在尝试在Ruby中的块中使用命名捕获组.$1仍然有效,但我想用我给的名字来引用它.

"foo /(bar)".gsub(/(?<my_word> \(.*?\) )/x) do |match|
  puts "$1 = #{$1} and $my_word = #{$my_word}"
end
Run Code Online (Sandbox Code Playgroud)

预期:$1 = (bar) and $my_word = (bar)

old*_*god 31

你在找

"foo /(bar)".gsub(/(?<my_word> \(.*?\) )/x) do |match|
  puts "$1 = #{$1} and $my_word = #{$~[:my_word]}"
end
Run Code Online (Sandbox Code Playgroud)

  • `$~` 等价于 `Regexp.last_match` (3认同)
  • 非常好,谢谢.我以前从未见过类似语法的东西. (2认同)