Javascript Regex - 仅捕获未转义的模式

标签 javascript regex lookbehind

给定一个 Javascript 字符串

{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+ 字符(将 { 添加到类中以匹配{} 之间的最短窗口)
  • } - 文字 }

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);

关于Javascript Regex - 仅捕获未转义的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41719460/

相关文章:

javascript - 从 div 生成图像(JSF、Javascript)

Java正则表达式只匹配双方括号中的单词

regex - grep regex 前瞻或字符串开始(或后视或字符串结尾)

c# - 正则表达式正向后视+负向前视

javascript - 单击时 HTML 下拉菜单不会保持打开状态

javascript - 使用javascript更改div的背景图像

java - 如何知道使用正则表达式时替换了哪个字符

javascript - 这个正则表达式前瞻有什么问题?

javascript - CheckBox 禁用属性绑定(bind)到 Polymer Property 的子属性

Regex Notepad++ 删除除日文字符以外的所有单词