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 回答