此双车把模式的正则表达式在以下情况下不起作用
Regex for this double handlebar pattern not working in the following case
我为此创建了正则表达式模式:{{}}-{{}}-{{}}
(?<![^*])(^|[^{])\{\{[^{}]*\}\}(?!\})([-]{1}\{\{[^{}]*\}\}(?!\})){2}(?![^*])
双手柄条正好重复 3 次,中间有破折号。
但正则表达式模式在以下情况下失败:
-{{}}-{{}}-{{}}
即,即使在第一个双把手之前出现破折号 (-),模式也匹配。理想情况下不应该。
这部分 (?<![^*])
意味着这些不应该是 *
以外的字符,直接位于当前位置的左侧(也用于模式末尾的负前瞻)
相反,您可以断言左右空白边界。
注意这部分[-]{1}
可以写成-
(?<!\S)\{\{[^{}]*\}\}(?:-\{\{[^{}]*\}\}){2}(?!\S)
看到一个regex101 demo。
我为此创建了正则表达式模式:{{}}-{{}}-{{}}
(?<![^*])(^|[^{])\{\{[^{}]*\}\}(?!\})([-]{1}\{\{[^{}]*\}\}(?!\})){2}(?![^*])
双手柄条正好重复 3 次,中间有破折号。
但正则表达式模式在以下情况下失败:
-{{}}-{{}}-{{}}
即,即使在第一个双把手之前出现破折号 (-),模式也匹配。理想情况下不应该。
这部分 (?<![^*])
意味着这些不应该是 *
以外的字符,直接位于当前位置的左侧(也用于模式末尾的负前瞻)
相反,您可以断言左右空白边界。
注意这部分[-]{1}
可以写成-
(?<!\S)\{\{[^{}]*\}\}(?:-\{\{[^{}]*\}\}){2}(?!\S)
看到一个regex101 demo。