using System.Text.RegularExpressions;
public static void Main()
string mask = @"ab*\*, hello ?or\?maybe@benteler.com, anychar:@";
char[] exceptionCharacters = {'*', '#', '?'};
StringBuilder escapedMask = new StringBuilder("", mask.Length * 2);
for (int i = 0; i < mask.Length; i++)
if (!isEscaped && mask[i].Equals('\\'))
else if (exceptionCharacters.Contains(mask[i]))
escapedMask.Append((isEscaped ? @"\": "") + mask[i].ToString());
escapedMask.Append(Regex.Escape((isEscaped ? @"\": "") + mask[i].ToString()));
Console.WriteLine("Original: " + mask);
Console.WriteLine("Regex.Escape: " + Regex.Escape(mask));
Console.WriteLine("Our.Escape: " + escapedMask.ToString());