using System.Text.RegularExpressions;
public static void Main()
const string input = @"""""|*""I have delimiter |* and an escaped \"" quote in me""|*100|*200|*300|*""am a string""|*""""";
string[] result = Split(input, "|*", @"\""", false);
foreach (string item in result)
public static string[] Split(string expression, string delimiter, string qualifier, bool ignoreCase)
string _Statement = string.Format("{0}(?=(?:[^{1}]*{1}[^{1}]*{1})*(?![^{1}]*{1}))", Regex.Escape(delimiter), Regex.Escape(qualifier));
RegexOptions _Options = RegexOptions.Compiled | RegexOptions.Multiline;
if (ignoreCase) _Options = _Options | RegexOptions.IgnoreCase;
Regex _Expression = new Regex(_Statement, _Options);
return _Expression.Split(expression);