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

Regex 在正则表达式中多次匹配相同的变量量,regex,Regex,我有一些看起来像{{{{{{this}}}的令牌,还有一些看起来像{{{this}}(其中this就是任何东西)。我想用一个正则表达式匹配这两种类型的标记。我得出了以下结论: \{{2,3}[^\{\}]+\}{2,3} (?:\{{3}[^\{\}]+\}{3})|(?:\{{2}[^\{\}]+\}{2}) 但是,它也匹配像{{this}}}和{{{{this}}这样的标记 \{{2,3}[^\{\}]+\}{2,3} (?:\{{3}[^\{\}]+\}{3})|(?:\{{2}[^

我有一些看起来像
{{{{{{this}}}
的令牌,还有一些看起来像
{{{this}}
(其中
this
就是任何东西)。我想用一个正则表达式匹配这两种类型的标记。我得出了以下结论:

\{{2,3}[^\{\}]+\}{2,3}
(?:\{{3}[^\{\}]+\}{3})|(?:\{{2}[^\{\}]+\}{2})
但是,它也匹配像
{{this}}}
{{{{this}}
这样的标记

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

这是可行的(将执行匹配,例如{
{{this}}
),但它要长得多。有没有办法用第一个正则表达式的紧凑性来获得第二个正则表达式的结果?换句话说,这是因为两个(或三个)括号在开始时是匹配的,我想匹配相同数量的结束括号。

我将等待其他人证明我错了,但我相信您的第二个示例是最好的。(这类似于HTML或XML中正则表达式的标记匹配,其中使用XPath之类的东西通常是更好的选择。)

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