正規表現を使用してテキストを他のテキストに連結できますか?
私は以下で構成される文字列を持っています:
"bird dog fish"
出力したい:
"bird catdog fish"
gsub
これを達成するために使用しますか?gsub
を使用して「犬」を一致させると、「猫」を前に追加するだけでなく、「犬」を「猫犬」に置き換える必要があるため、混乱しています。特定の一致にテキストを追加するにはどうすればよいですか? スキャンなどを使用する必要がありますか?
交換して何が悪い?
>>> "bird dog fish".gsub(/(dog)/, 'cat\1')
=> "bird catdog fish"
は、キャプチャされたグループ\1
への参照です。(dog)
もちろん、(dog)
任意の有効な正規表現を使用できるため、この例はより複雑な状況でも簡単に使用できます。
必要に応じて、複数のキャプチャ グループを使用できます。
>>> "bird dog fish".gsub(/(dog)(.*)(sh)/, 'cat\1\3\2')
=> "bird catdogsh fi"
Ruby 1.9 では、名前付きキャプチャ グループが導入されました。
>>> "bird dog fish".gsub(/(?<mydog>dog)/, 'cat\kmydog')
=> "bird catdog fish"
ルビーです。それを行うには常に多くの方法があります。詳細については、標準ドキュメントを参照してください。