Ruby キャプチャした正規表現パターンで文字列を置換する 質問する

Ruby キャプチャした正規表現パターンで文字列を置換する 質問する

これを Ruby に翻訳するのに問題があります。

以下はまさに私がやりたいことを実行する JavaScript です。

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

私が試してみましたグサブサブ、 そして交換するしかし、どれも私が期待しているようには動作しないようです。

私が試したことの例を以下に示します。

"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 }

ベストアンサー1

'\1'交換品をお試しください(一重引用符\は重要です。そうでない場合は、 ): をエスケープする必要があります。

"foo".gsub(/(o+)/, '\1\1\1')
#=> "foooooo"

しかし、キャプチャ グループにのみ興味があるようなので、正規表現を使用して文字列にインデックスを付けることができることに注意してください。

"foo"[/oo/]
#=> "oo"
"Z_123: foobar"[/^Z_.*(?=:)/]
#=> "Z_123"

おすすめ記事