Ruby 正则表达式匹配双胡子但不匹配三胡子

Ruby regex to match double mustache but not triple mustache

我在 rails 应用程序的 ruby 中使用小胡子 gem。给定一个模板,我想用三胡子替换模板中的所有双胡子,并且当它是三胡子时不替换。原来的模板不会有单胡子的,所以不想担心单胡子。

例如:

temp = "You have just won {{value}} {{{currency}}}!"

应转换为

temp = "You have just won {{{value}}} {{{currency}}}!"

这可以通过否定前瞻来完成。

\{\{[^}]+\}\}(?!\})

这将匹配由 2 个胡须包围但后面没有第三个胡须的子字符串。

然后可以在火柴上加上额外的胡须。

temp = "You have just won {{value}} {{{currency}}}!"
temp.gsub!(/\{\{[^}]+\}\}(?!\})/, '{\&}')
puts temp