我想知道为什么我的正则表达式不起作用,我需要实现以下行为:
"aoaoaoaoaoao".gsub!(/o/, 'e')
以上将正确地给我: aeaeaeaeaeae
现在,真实的东西看起来像这样:
"Today I ate a ((noun)), and it tasted ((adjective))".gsub!(/\(\(.*\)\)/, "word")
结果是:“今天我吃了一句话”,但我曾希望它会回到我身边: “今天我吃了一个字,它尝到了字”
很明显我的正则表达式有问题,(对吧?)因为它只会替换一次。你能告诉我如何让它取代所有的比赛吗? (就像在我的第一个例子中)
非常感谢!
答案 0 :(得分:8)
您需要以下正则表达式:
/\(\(.*?\)\)/
.*?
消耗尽可能少的字符以获得匹配。所以问题不在于正则表达式替换了一次,而是它匹配了字符串的一部分 - 从第一个((
到最后一个))
。