3

正規表現を使用してテキストを他のテキストに連結できますか?

私は以下で構成される文字列を持っています:

"bird dog fish"

出力したい:

"bird catdog fish"

gsubこれを達成するために使用しますか?gsubを使用して「犬」を一致させると、「猫」を前に追加するだけでなく、「犬」を「猫犬」に置き換える必要があるため、混乱しています。特定の一致にテキストを追加するにはどうすればよいですか? スキャンなどを使用する必要がありますか?

4

1 に答える 1

5

交換して何が悪い?

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

ルビーです。それを行うには常に多くの方法があります。詳細については、標準ドキュメントを参照してください。

于 2013-03-27T16:43:41.243 に答える