using System; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { var matches = Regex.Matches("Test {Token1} {Token 2}", @"{([^{}]*)"); var results = matches.Cast().Select(m => m.Groups[1].Value).Distinct().ToList(); Console.WriteLine(String.Join(", ", results)); matches = Regex.Matches("Test {Token1} {Token {2}}", @"{((?>[^{}]+|{(?)|}(?<-c>))*(?(c)(?!)))"); results = matches.Cast().Select(m => m.Groups[1].Value).Distinct().ToList(); Console.WriteLine(String.Join(", ", results)); } }