我可以使用正则表达式将文本连接到其他文本吗?
我有一个由以下字符组成的字符串:
"bird dog fish"
我想输出:
"bird catdog fish"
我会使用gsub
来完成此操作吗?我感到困惑,因为如果我使用gsub
匹配“狗”,我将不得不用“catdog”替换“dog”,而不是仅在其前面添加“cat”。如何在特定匹配项中添加一些文本?我是否必须使用扫描或什么?
答案 0 :(得分: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"
这是Ruby。 始终有很多方法可以做到这一点。更多信息可以在标准文档中找到。