2

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

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

以上将正确地给我:aeaeaeaeaeae

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

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

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

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

非常感谢!

4

1 回答 1

8

您需要以下正则表达式:

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

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

于 2011-09-21T20:15:24.070 回答