Ruby怎么用捕获的正则表达式模式替换字符串?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

我无法将此翻译到Ruby里。

这是一段JavaScript,:

function get_code(str){
    return str.replace(/^(Z_.*): .*/,"$1")​​​​​​​​​​​​​​​​​​​​​​​​​​​;
}

我已经尝试过gsubsubreplace,但没有达到效果。

以下是我尝试过的:

"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/) { |capture| capture }
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, "$1")
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, "#{$1}")
"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, "\1")
"Z_sdsd: sdsd".gsub(/(.).*/) { |capture| capture }
提问于
用户回答回答于

可以使用regex索引字符串:

"foo"[/oo/]
#=> "oo"
"Z_123: foobar"[/^Z_.*(?=:)/]
#=> "Z_123"
用户回答回答于

\1双引号需要转义。所以

"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, "\\1")

"Z_sdsd: sdsd".gsub(/^(Z_.*): .*/, '\1')

gsub的文档如果是双引号字符串时,则两个反引用都必须在前面加上一个额外的反斜杠。

你可以:

"Z_sdsd: sdsd".scan(/^Z_.*(?=:)/)

"Z_sdsd: sdsd"[/^Z_.*(?=:)/]

扫码关注云+社区