using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string s = "This <tag id=\"1\">string <inner><tag></tag></inner></tag> is <p>inside <b>of</b> another</p> string";
Match m;
do
{
m = Regex.Match(s, @"\A([\s\S]*)(<(\S+)[^[<>]*>[^<>]*</\3>)([\s\S]*)\Z");
if (m.Success) {
s = m.Groups[1].Value + "{0}" + m.Groups[4].Value;
System.Console.WriteLine("Match: " + m.Groups[2].Value);
}
} while (m.Success);
System.Console.WriteLine("Result: " + s);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpjbGFzcyBQcm9ncmFtCnsKICBzdGF0aWMgdm9pZCBNYWluKCkKICB7CiAgICBzdHJpbmcgcyA9ICJUaGlzIDx0YWcgaWQ9XCIxXCI+c3RyaW5nIDxpbm5lcj48dGFnPjwvdGFnPjwvaW5uZXI+PC90YWc+IGlzIDxwPmluc2lkZSA8Yj5vZjwvYj4gYW5vdGhlcjwvcD4gc3RyaW5nIjsKICAgIE1hdGNoIG07CiAgICBkbwogICAgewogICAgICBtID0gUmVnZXguTWF0Y2gocywgQCJcQShbXHNcU10qKSg8KFxTKylbXls8Pl0qPltePD5dKjwvXDM+KShbXHNcU10qKVxaIik7CiAgICAgIGlmIChtLlN1Y2Nlc3MpIHsKICAgICAgICBzID0gbS5Hcm91cHNbMV0uVmFsdWUgKyAiezB9IiArIG0uR3JvdXBzWzRdLlZhbHVlOwogICAgICAgIFN5c3RlbS5Db25zb2xlLldyaXRlTGluZSgiTWF0Y2g6ICIgKyBtLkdyb3Vwc1syXS5WYWx1ZSk7CiAgICAgIH0KICAgIH0gd2hpbGUgKG0uU3VjY2Vzcyk7CiAgICBTeXN0ZW0uQ29uc29sZS5Xcml0ZUxpbmUoIlJlc3VsdDogIiArIHMpOwogIH0KfQ==