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

时间:2016-06-04 12:38:33

标签: ruby-on-rails ruby regex mustache

我在我的ruby on rails app上使用胡子宝石。给定一个模板,我想用三胡子替换模板中的所有双胡子,而不是当它是三胡子时替换。原始模板中不会有单个胡子,所以我不想担心单个胡子。

例如:

{{ notice_js_disabled }}

应转换为

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

1 个答案:

答案 0 :(得分:3)

这可以通过负向前瞻来完成。

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

这将匹配由2个胡须包围的子串,但不会跟随第三个。

然后可以用额外的胡子包围比赛。

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