我可以使用正则表达式将文本连接到其他文本吗?
我有一个字符串,包括:
"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"
这是鲁比。总是有很多方法可以做到这一点。更多可以在标准文档中找到。