using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
string msg= "=?windows-1258?B?UkU6IFRyIDogUGxhbiBkZSBjb250aW51aXTpIGQnYWN0aXZpdOkgZGVz?= =?windows-1258?B?IHNlcnZldXJzIFdlYiBHb1ZveWFnZXN=?=";
var charSetOccurences = new Regex(@"=\?(.*?)\?([BQ])\?(.*?)\?=", RegexOptions.IgnoreCase);
MatchCollection matches = charSetOccurences.Matches(msg);
foreach (Match match in matches)
{
Console.WriteLine("Charset: " + match.Groups[1].Value);
Console.WriteLine("Encoding type: " + match.Groups[2].Value);
Console.WriteLine("Encoded String: " + match.Groups[3].Value + "\n");
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CnB1YmxpYyBjbGFzcyBUZXN0CnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgIHsgICAKICAgICAgICBzdHJpbmcgbXNnPSAiPT93aW5kb3dzLTEyNTg/Qj9Va1U2SUZSeUlEb2dVR3hoYmlCa1pTQmpiMjUwYVc1MWFYVHBJR1FuWVdOMGFYWnBkT2tnWkdWej89ID0/d2luZG93cy0xMjU4P0I/SUhObGNuWmxkWEp6SUZkbFlpQkhiMVp2ZVdGblpYTj0/PSI7CiAgICAgICAgdmFyIGNoYXJTZXRPY2N1cmVuY2VzID0gbmV3IFJlZ2V4KEAiPVw/KC4qPylcPyhbQlFdKVw/KC4qPylcPz0iLCBSZWdleE9wdGlvbnMuSWdub3JlQ2FzZSk7CiAgICAgICAgTWF0Y2hDb2xsZWN0aW9uIG1hdGNoZXMgPSBjaGFyU2V0T2NjdXJlbmNlcy5NYXRjaGVzKG1zZyk7CiAgICAgICAgZm9yZWFjaCAoTWF0Y2ggbWF0Y2ggaW4gbWF0Y2hlcykKICAgICAgICB7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJDaGFyc2V0OiAiICsgbWF0Y2guR3JvdXBzWzFdLlZhbHVlKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoIkVuY29kaW5nIHR5cGU6ICIgKyBtYXRjaC5Hcm91cHNbMl0uVmFsdWUpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiRW5jb2RlZCBTdHJpbmc6ICIgKyBtYXRjaC5Hcm91cHNbM10uVmFsdWUgKyAiXG4iKTsKICAgICAgICB9CiAgICB9Cn0=