我可以使用正则表达式将文本连接到其他文本吗?
我有一个字符串组成:
"bird dog fish"
Run Code Online (Sandbox Code Playgroud)
我想输出:
"bird catdog fish"
Run Code Online (Sandbox Code Playgroud)
我会用它gsub来完成吗?我感到困惑,因为如果我使用"dog"匹配gsub,我将不得不用"catdog"替换"dog"而不是仅仅添加"cat".如何在特定匹配项中添加一些文本?我是否必须使用扫描或其他东西?
更换有什么问题?
>>> "bird dog fish".gsub(/(dog)/, 'cat\1')
=> "bird catdog fish"
Run Code Online (Sandbox Code Playgroud)
这\1是对(dog)捕获组的引用.当然,(dog)可以是任何有效的正则表达式,因此这个例子可以很容易地用于更复杂的情况.
如果需要,您可以拥有多个捕获组.
>>> "bird dog fish".gsub(/(dog)(.*)(sh)/, 'cat\1\3\2')
=> "bird catdogsh fi"
Run Code Online (Sandbox Code Playgroud)
Ruby 1.9引入了命名捕获组:
>>> "bird dog fish".gsub(/(?<mydog>dog)/, 'cat\kmydog')
=> "bird catdog fish"
Run Code Online (Sandbox Code Playgroud)
这是Ruby.有总是很多方法可以做到这一点.更多信息可以在标准文档中找到.
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |