1. ホーム
  2. ruby

[解決済み] Ruby で正規表現を取り込んで文字列を置換する。

2022-06-22 16:35:04

質問

これをRubyに翻訳するのに苦労しています。

私がやりたいことを正確に行うJavaScriptの断片がここにあります。

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

私が試したのは gsub , サブ そして を置き換える が、どれも私が期待していることを行っていないようです。

以下は、私が試したものの例です。

"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' を置換してください ( シングルクォート が重要で、そうでない場合は \ ):

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

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

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