如何创建一个正则表达式,通过ruby的gsub替换字符串中的所有匹配项?

时间:2011-09-21 20:10:24

标签: ruby regex gsub

我想知道为什么我的正则表达式不起作用,我需要实现以下行为:

"aoaoaoaoaoao".gsub!(/o/, 'e')

以上将正确地给我: aeaeaeaeaeae

现在,真实的东西看起来像这样:

"Today I ate a ((noun)), and it tasted ((adjective))".gsub!(/\(\(.*\)\)/, "word")

结果是:“今天我吃了一句话”,但我曾希望它会回到我身边: “今天我吃了一个字,它尝到了字”

很明显我的正则表达式有问题,(对吧?)因为它只会替换一次。你能告诉我如何让它取代所有的比赛吗? (就像在我的第一个例子中)

非常感谢!

1 个答案:

答案 0 :(得分:8)

您需要以下正则表达式:

/\(\(.*?\)\)/

.*?消耗尽可能少的字符以获得匹配。所以问题不在于正则表达式替换了一次,而是它匹配了字符串的一部分 - 从第一个((到最后一个))