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);
给定一个 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);