using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var input = "COMMAND STATUS {OBJECT1}{OBJECT2} \"TEXT1\" \"TEXT2\" ";
var regex = "(?<command>.+?) (?<status>.+?) (?<objects>\\{.+?\\})+ (?:(?<texts>\".+?\") ?)+";
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);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkgICAgdmFyIGlucHV0ID0gIkNPTU1BTkQgU1RBVFVTIHtPQkpFQ1QxfXtPQkpFQ1QyfSBcIlRFWFQxXCIgXCJURVhUMlwiICI7CiAgICAgICAgdmFyIHJlZ2V4ID0gIig/PGNvbW1hbmQ+Lis/KSAoPzxzdGF0dXM+Lis/KSAoPzxvYmplY3RzPlxcey4rP1xcfSkrICg/Oig/PHRleHRzPlwiLis/XCIpID8pKyI7CgogICAgICAgIHZhciBtYXRjaCA9IFJlZ2V4Lk1hdGNoKGlucHV0LCByZWdleCk7CgogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJjb21tYW5kOiB7MH0iLCBtYXRjaC5Hcm91cHNbImNvbW1hbmQiXSk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoInN0YXR1czogezB9IiwgbWF0Y2guR3JvdXBzWyJzdGF0dXMiXSk7CgogICAgICAgIGZvcmVhY2ggKHZhciBAb2JqZWN0IGluIG1hdGNoLkdyb3Vwc1sib2JqZWN0cyJdLkNhcHR1cmVzKQogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgib2JqZWN0OiB7MH0iLCBAb2JqZWN0KTsKCiAgICAgICAgZm9yZWFjaCAodmFyIHRleHQgaW4gbWF0Y2guR3JvdXBzWyJ0ZXh0cyJdLkNhcHR1cmVzKQogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgidGV4dDogezB9IiwgdGV4dCk7Cgl9Cn0=