Я пытаюсь сопоставить балансировочные скобки ({}) в строках. Например, я хочу сбалансировать следующее:
if (a == 2)
{
doSomething();
{
int x = 10;
}
}
// this is a comment
while (a <= b){
print(a++);
}
Я придумал это регулярное выражение из MSDN, но оно не работает. Я хочу извлечь несколько вложенных подходящих наборов {}. Меня интересует только родительский матч
"[^{}]*" +
"(" +
"((?'Open'{)[^{}]*)+" +
"((?'Close-Open'})[^{}]*)+" +
")*" +
"(?(Open)(?!))";