using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { var s = "xxx (aaa - bbb CC - dd - ee-FFF) (aaa2 - bbb2 CC2- dd2- ee2-FFF2)"; var pattern = @"\((?(?:(?! - )[^()])+)(?: - (?(?:(?! - )[^()])+)){2,}\)"; var ms = Regex.Matches(s, pattern); foreach (Match m in ms) { Console.WriteLine($"Matched: {m.Value}"); var res = m.Groups["o"].Captures.Cast().Select(x => x.Value); Console.WriteLine(string.Join("; ", res)); } } }