using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var text = "{token1:param1}stuff{token2}more stuff{token3:param3}";
var pattern = @"\{(?<key>[^:}]*)(?::(?<value>[^}]*))?}";
var matches = Regex.Matches(text, pattern);
foreach (Match m in matches)
{
Console.WriteLine(m.Value);
Console.WriteLine(m.Groups["key"].Value);
Console.WriteLine(m.Groups["value"].Value);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQl2YXIgdGV4dCA9ICJ7dG9rZW4xOnBhcmFtMX1zdHVmZnt0b2tlbjJ9bW9yZSBzdHVmZnt0b2tlbjM6cGFyYW0zfSI7CgkJdmFyIHBhdHRlcm4gPSBAIlx7KD88a2V5PlteOn1dKikoPzo6KD88dmFsdWU+W159XSopKT99IjsKCQl2YXIgbWF0Y2hlcyA9IFJlZ2V4Lk1hdGNoZXModGV4dCwgcGF0dGVybik7CiAgICAgICAgZm9yZWFjaCAoTWF0Y2ggbSBpbiBtYXRjaGVzKQogICAgICAgIHsKICAgICAgICAJQ29uc29sZS5Xcml0ZUxpbmUobS5WYWx1ZSk7CiAgICAgICAgCUNvbnNvbGUuV3JpdGVMaW5lKG0uR3JvdXBzWyJrZXkiXS5WYWx1ZSk7CiAgICAgICAgCUNvbnNvbGUuV3JpdGVMaW5lKG0uR3JvdXBzWyJ2YWx1ZSJdLlZhbHVlKTsKICAgICAgICB9Cgl9CgkKfQ==