using System; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { var text = "(1 * (2 - 3)) + 4"; var pattern = @"(?=(\((?>[^()]+|(?)\(|(?<-c>)\))*(?(c)(?!))\)))"; var results = Regex.Matches(text, pattern) .Cast() .Select(m => m.Groups[1].Value) .ToList(); Console.WriteLine(String.Join(", ", results)); } }