using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { var pattern = @"\bisnull\((?>[^][()]|(?\[[^][]*])|(?)\(|(?<-o>)\))*(?(o)(?!))\)"; var text = "isnull(Num([abc]), [a], [b]) + sum([d])"; var result = Regex.Match(text, pattern, RegexOptions.IgnoreCase)?.Groups["x"].Captures; Console.WriteLine(string.Join(", ", result)); } }