public static string Escape(string s)
{
s = s.Replace(@"\", @"\\");
s = escapeRegexp.Replace(s, escapeChar);
return escapeNonprintable.Replace(s, m => {
var c = m.Value[0];
return c < 0x100 ? string.Format(@"\x{0:x2}", (int)c) : string.Format(@"\u{0:x4}", (int)c);
});
}