using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { var input = "X1 OR ( X2 AND( X3 AND X4 ) AND X5 ) OR X6"; var filtered = Regex.Replace(input, @"\((?>[^()]|(?)\(|(?<-o>)\))*\)(?(o)(?!))", string.Empty); var result = filtered.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries) .Where(element => element == "OR" || element == "AND"); var temp = string.Join(" ", result); Console.WriteLine(temp); } }