此双车把模式的正则表达式在以下情况下不起作用

Regex for this double handlebar pattern not working in the following case

我为此创建了正则表达式模式:{{}}-{{}}-{{}}

(?<![^*])(^|[^{])\{\{[^{}]*\}\}(?!\})([-]{1}\{\{[^{}]*\}\}(?!\})){2}(?![^*])

双手柄条正好重复 3 次,中间有破折号。

但正则表达式模式在以下情况下失败:

-{{}}-{{}}-{{}}

即,即使在第一个双把手之前出现破折号 (-),模式也匹配。理想情况下不应该。

这部分 (?<![^*]) 意味着这些不应该是 * 以外的字符,直接位于当前位置的左侧(也用于模式末尾的负前瞻)

相反,您可以断言左右空白边界。

注意这部分[-]{1}可以写成-

(?<!\S)\{\{[^{}]*\}\}(?:-\{\{[^{}]*\}\}){2}(?!\S)

看到一个regex101 demo