Если ваш движок регулярных выражений поддерживает lookahead, тогда вы можете использовать
\b[^{\s]+(?=\s*\{)
Это будет соответствовать ["Common", "MyClass1", "Method1", "Method2", "MyClass2", "Method3"]
в вашем примере.
Пояснение:
\b
: начать поиск с границы слова.
[^{\s]+
: сопоставить один или несколько символов, кроме открывающих скобок или пробелов.
(?=\s*\{)
: Утверждение, что совпадение заканчивается символом, за которым следует дополнительный пробел (включая разрывы строк) и открывающая скобка.
Ограничение совпадений определенными уровнями иерархии (в этом случае совпадение только на втором уровне вложенности) невозможно с регулярными выражениями в целом. Это может быть возможно на некоторых диалектах регулярных выражений, но это расширяет пределы того, для чего предназначены регулярные выражения - парсер подойдет для этого лучше.