在正则表达式中多次匹配相同的变量

时间:2012-01-01 05:36:05

标签: regex

我有一些看起来像{{{this}}}的令牌和一些看起来像{{this}}的令牌(其中this 任何)。我想将两种类型的令牌与一个正则表达式匹配。我想出了以下内容:

\{{2,3}[^\{\}]+\}{2,3}

但是,这也会匹配{{this}}}{{{this}}等令牌。所以我做了以下几点:

(?:\{{3}[^\{\}]+\}{3})|(?:\{{2}[^\{\}]+\}{2})

可行(会执行 { {{this}}等匹配),但会更长。有没有办法得到第二个正则表达式的结果与第一个正则表达式的紧凑性?换句话说,因为两个(或三个)括号在开头匹配,我想匹配相同数量的右括号。

1 个答案:

答案 0 :(得分:0)

我只是等着别人证明我错了,但我相信你的第二个例子是你能做的最好的。 (这类似于使用HTML或XML中的正则表达式进行标记匹配,其中使用类似XPath的东西通常是更好的选择。)