Javascript 正则表达式 - 仅捕获未转义的模式

Javascript Regex - Capture Only Unescaped Patterns

给定一个 Javascript 中的字符串 like

{include} anything in {curly braces} but not when they are escaped like {this} and work for any position of the {brace}

我要找回

我一直在想办法,但不回头看就被难住了。

最重要的是不要获取转义的 {} 内容。如有必要,我会接受在火柴中包含花括号的东西。

不幸的是,到目前为止我所管理的只是这样的表达式

(?:[^//]){.*?}

但如果 { 位于目标文本的开头,则不匹配。

谁能帮帮我?谢谢

我假设转义字符是 /

您可以将以下正则表达式与将保存您的值的捕获组一起使用:

/(?:^|[^\/]){([^}]*)}/g
             ^^^^^^^

查看 regex demo

详情:

  • (?:^|[^\/]) - 字符串的开头或 /
  • 以外的字符
  • { - 文字 {
  • ([^}]*) - 第 1 组捕获除 } 以外的任何 0+ 个字符(将 { 添加到 class 以匹配 window 之间最短的 window =15=] 和 })
  • } - 文字 }.

var rx = /(?:^|[^\/]){([^}]*)}/g;
var str = "{include} anything in {curly braces} but not when they are escaped like /{this} and work for any position of the {brace}";
var m, res = [];
while ((m = rx.exec(str)) !== null) {
  res.push(m[1]);
}
console.log(res);