using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Linq;
public class Test
{
public static void Main()
{
var str = "<backspace>это буу<backspace>дка<backspace><backspace>ет тек<backspace>стовыыф<backspace><backspace>й ткаукц<backspace><backspace><backspace><backspace><backspace>екст";
var str2 = "Это<backspace><backspace><backspace><backspace><backspace><backspace>";
var str3 = "a<backspace><backspace><backspace>b";
Console.WriteLine("'{0}'", Rx.backspaceRx.Replace(str, string.Empty).Replace("<backspace>", ""));
Console.WriteLine("'{0}'", Rx.backspaceRx.Replace(str2, string.Empty).Replace("<backspace>", ""));
Console.WriteLine("'{0}'", Rx.backspaceRx.Replace(str3, string.Empty).Replace("<backspace>", ""));
}
public static class Rx
{
public static readonly Regex backspaceRx = new Regex(
"^(?:<backspace>)+|(?:<backspace>)+$|(?<t>(?<!<backspace).)+(?<-t><backspace>)+(?(t)(?!))",
RegexOptions.Compiled | RegexOptions.Singleline);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwp1c2luZyBTeXN0ZW0uTGlucTsKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBzdHIgPSAiPGJhY2tzcGFjZT7RjdGC0L4g0LHRg9GDPGJhY2tzcGFjZT7QtNC60LA8YmFja3NwYWNlPjxiYWNrc3BhY2U+0LXRgiDRgtC10Lo8YmFja3NwYWNlPtGB0YLQvtCy0YvRi9GEPGJhY2tzcGFjZT48YmFja3NwYWNlPtC5INGC0LrQsNGD0LrRhjxiYWNrc3BhY2U+PGJhY2tzcGFjZT48YmFja3NwYWNlPjxiYWNrc3BhY2U+PGJhY2tzcGFjZT7QtdC60YHRgiI7CgkJdmFyIHN0cjIgPSAi0K3RgtC+PGJhY2tzcGFjZT48YmFja3NwYWNlPjxiYWNrc3BhY2U+PGJhY2tzcGFjZT48YmFja3NwYWNlPjxiYWNrc3BhY2U+IjsKCQl2YXIgc3RyMyA9ICJhPGJhY2tzcGFjZT48YmFja3NwYWNlPjxiYWNrc3BhY2U+YiI7CgkJQ29uc29sZS5Xcml0ZUxpbmUoIid7MH0nIiwgUnguYmFja3NwYWNlUnguUmVwbGFjZShzdHIsIHN0cmluZy5FbXB0eSkuUmVwbGFjZSgiPGJhY2tzcGFjZT4iLCAiIikpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKCInezB9JyIsIFJ4LmJhY2tzcGFjZVJ4LlJlcGxhY2Uoc3RyMiwgc3RyaW5nLkVtcHR5KS5SZXBsYWNlKCI8YmFja3NwYWNlPiIsICIiKSk7CgkJQ29uc29sZS5Xcml0ZUxpbmUoIid7MH0nIiwgUnguYmFja3NwYWNlUnguUmVwbGFjZShzdHIzLCBzdHJpbmcuRW1wdHkpLlJlcGxhY2UoIjxiYWNrc3BhY2U+IiwgIiIpKTsKCX0KCQoJcHVibGljIHN0YXRpYyBjbGFzcyBSeAoJewoJCXB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUmVnZXggYmFja3NwYWNlUnggPSBuZXcgUmVnZXgoCgkJCSJeKD86PGJhY2tzcGFjZT4pK3woPzo8YmFja3NwYWNlPikrJHwoPzx0Pig/PCE8YmFja3NwYWNlKS4pKyg/PC10PjxiYWNrc3BhY2U+KSsoPyh0KSg/ISkpIiwKCQkJUmVnZXhPcHRpb25zLkNvbXBpbGVkIHwgUmVnZXhPcHRpb25zLlNpbmdsZWxpbmUpOwoJfQp9Cg==