正则表达式修改文本
问题描述:
我可以使用正则表达式连接文本到其他文本吗?正则表达式修改文本
我有一个字符串包括:
"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"
这是红宝石。有总是许多方法来做到这一点。更多可以在标准文档中找到。
\ 1做什么? – zProgrammer 2013-03-27 16:45:25
@Jack:这是一个被捕获组的参考。 Regex中'dog'周围的parens指定它应该被“捕获”用于输出。 – voithos 2013-03-27 16:46:32
啊。你能做像2或3这样的东西吗?如果是这样会做什么? – zProgrammer 2013-03-27 16:48:28