using System; using System.Text.RegularExpressions; public class Test { public static void Main() { var input = "COMMAND STATUS {OBJECT1}{OBJECT2} \"TEXT1\" \"TEXT2\" "; var regex = "(?.+?) (?.+?) (?\\{.+?\\})+ (?:(?\".+?\") ?)+"; var match = Regex.Match(input, regex); Console.WriteLine("command: {0}", match.Groups["command"]); Console.WriteLine("status: {0}", match.Groups["status"]); foreach (var @object in match.Groups["objects"].Captures) Console.WriteLine("object: {0}", @object); foreach (var text in match.Groups["texts"].Captures) Console.WriteLine("text: {0}", text); } }