在Ruby中正则表达式匹配之前插入字符串的好方法

时间:2011-07-19 06:50:53

标签: ruby regex

这样做的好方法是什么?似乎我可以使用几种不同方法的组合来实现我想要的东西,但可能有一个更简单的方法我忽略了。例如,PHP函数preg_replace将执行此操作。 Ruby中有类似的东西吗?

我打算做的简单例子:

orig_string = "all dogs go to heaven"
string_to_insert = "nice "
regex = /dogs/

end_result = "all nice dogs go to heaven"

2 个答案:

答案 0 :(得分:12)

可以使用Ruby的“gsub”完成,按照:

http://railsforphp.com/2008/01/17/regular-expressions-in-ruby/#preg_replace

orig_string = "all dogs go to heaven"
end_result = orig_string.gsub(/dogs/, 'nice \\0')

答案 1 :(得分:3)

result = subject.gsub(/(?=\bdogs\b)/, 'nice ')

正则表达式检查字符串中的每个位置是否可以在那里匹配整个单词dogs,然后在那里插入字符串nice

单词边界锚点\b确保我们不会意外地匹配hotdogs等。