using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.RegularExpressions; public class Test { public static void Main() { var input = "One Two \"Three Four\" \"Five \\\"Six\\\"\""; Console.WriteLine(input); List matches = Regex.Matches(input, @"(?s)""(?[^""\\]*(?:\\.[^""\\]*)*)""|(?\S+)") .Cast() .Select(x => Regex.Replace(x.Groups["r"].Value, @"\\(.)", "$1")) .ToList(); foreach (var s in matches) Console.WriteLine(s); } }