我想在javascript中解决正则表达式:
忽略}字符包装上下文的引用。 但必须匹配}字符超出引用。
例如: " Sentense {他说'你好,{某人}',她说'嗨,{某人}'得到了一些东西。"
结果: {他说'你好,{某人}',她说,嗨,{某人}' }
感谢您的帮助
答案 0 :(得分:0)
上下文有点模糊,但假设您希望结果包含外部花括号内的所有内容(包括),您可以使用/{.*}/g
。
这可以在以下内容中看到:
var regex = /{.*}/g;
var string = 'The sentense { he said "hello, {somebody}" } got a something.';
console.log(string.match(regex)[0]);
或者如果你想抓住所有三个组件,你可以使用稍微复杂的正则表达式/({.*(?={))(.*(?<=.*}))(?:.*)}(.*)/g
:
打破这个局面:
({.*(?={))
- 将任何内容分组到第二个{
(.*(?<=.*}))
- 抓住内部花括号内的所有内容并将其分组(?:.*)
- 将任何内容分组到下一个}
}
- 继续搜索下一个}
(但不要将其分组)(.*)
- 在此之后对任何内容进行分组这可以在JavaScript中看到:
var regex = /({.*(?={))(.*(?<=.*}))(?:.*)}(.*)/g;
var string = 'The sentense { he said "hello, {somebody}" } got a something.';
string.replace(regex, function(match, g1, g2, g3) {
console.log(match);
console.log(g1);
console.log(g2);
console.log(g3);
});
可以看到 Regex101 here 。