using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { var reg = @"\b(?:Create|Set|Delete)\((?>[^()]+|(?)\(|(?<-c>)\))*(?(c)(?!))\)"; var text = "Create(Apple | Banana(Tree) | Mango (Tree) ) | Delete(Guava)|Set(Orange(Tree))"; var result = Regex.Matches(text, reg).Cast().Select(x => x.Value).ToList(); foreach (var s in result) Console.WriteLine(s); } }