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)%|})";
var matches = Regex.Matches(s, regex, RegexOptions.Singleline);
foreach (Match match in matches)
{
Console.WriteLine(match.Groups["v"].Value);
}
}
}