using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { string pattern = @"\b[fF]iles\b[^*()]*(?:\([^()]*\))?\|\*(?\.[\w*]+)(?:[,;]\*(?\.[\w*]+))*"; string input = @"txt files `(*.txt)|*.txt|All files (*.*)|*.*` Image Files`|*.jpg;*.jpeg;*.png;` Excel Files `(*.xls, *.xlsx)|*.xls;*.xlsx|CSV Files (*.csv)|*.csv`"; var strings = Regex.Matches(input, pattern) .SelectMany(m => m.Groups["ext"].Captures.Select(c => c.Value)) .ToArray() .Distinct(); foreach (var s in strings) { Console.WriteLine(s); } } }