using System;
using System.Text.RegularExpressions;
using System.IO;
public class Test
{
public static void Main()
{
var s = "This is a {test} %String%. %Stack% {Overflow}";
var regex = "(?:(?<p>%)|(?<b>{))(?<v>.*?)(?(p)%|})";
var matches = Regex.Matches(s, regex, RegexOptions.Singleline);
foreach (Match match in matches)
{
Console.WriteLine(match.Groups["v"].Value);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CnVzaW5nIFN5c3RlbS5JTzsKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBzID0gIlRoaXMgaXMgYSB7dGVzdH0gJVN0cmluZyUuICVTdGFjayUge092ZXJmbG93fSI7CgkJdmFyIHJlZ2V4ID0gIig/Oig/PHA+JSl8KD88Yj57KSkoPzx2Pi4qPykoPyhwKSV8fSkiOwoJCXZhciBtYXRjaGVzID0gUmVnZXguTWF0Y2hlcyhzLCByZWdleCwgUmVnZXhPcHRpb25zLlNpbmdsZWxpbmUpOyAKCQlmb3JlYWNoIChNYXRjaCBtYXRjaCBpbiBtYXRjaGVzKSAKCQl7CgkJICAgIENvbnNvbGUuV3JpdGVMaW5lKG1hdGNoLkdyb3Vwc1sidiJdLlZhbHVlKTsKCQl9Cgl9Cn0=