匹配“{{”和“}}”所包围的文字

时间:2013-06-08 20:44:13

标签: c# regex

我正在寻找能够做到这一点的正则表达式: 我的文字:

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

我想要提取的内容:

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

有没有人有想法?

我试过:"{{(.)*}}" 但它会返回"blabla1""blabla3"

2 个答案:

答案 0 :(得分:10)

您可以使用balancing groups来计算和匹配这些嵌套构造。例如:

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

答案 1 :(得分:2)

这有嵌套,因此它不是常规语法。一些正则表达式引擎具有处理大括号匹配的扩展,但一般来说,最好的方法是在List<string>中扫描字符串并累积输出,同时跟踪嵌套深度。