匹配由“{{”和“}}”包围的文本

问题描述 投票:0回答:3

我正在寻找一个可以做到这一点的正则表达式: 我的文字:

"Blablabla {{ blabla1 }} blablablabla {{ blablabla2 {{ blabla3 }} }} blablabla"

我想提取什么:

"blabla1" and "blablabla2 {{ blabla3 }}"

有人有想法吗?

我尝试过:

"{{(.)*}}"
但它返回
"blabla1"
"blabla3"

c# regex
3个回答
10
投票

您可以使用平衡组来计数和匹配此类嵌套结构。例如:

(?x) {{ ( (?: [^{}]+ | (?<open>{{) | (?<-open>}}) )* (?(open)(?!)) ) }}

2
投票

这有嵌套,所以它不是常规语法。一些正则表达式引擎具有处理大括号匹配的扩展,但一般来说,最好的方法是简单地扫描字符串并在

List<string>
中累积输出,同时跟踪嵌套深度。


0
投票

我测试一下。这个工作 “(?<={{).+?(?=({|}))"

© www.soinside.com 2019 - 2024. All rights reserved.