晚上看lambda,结果神游至老赵 的博客去了。于是乎看到了1年多前的一个趣味编程题 。老赵用2种思路解决了。但是由于最近遇到个事都会想着正则是否可以搞定。于是乎就有了下面的这个 string str = "cpu-3.0g--color-red-green-black--price-5000-8000--weight-'3-'--keywords-'levi''s'"; MatchCollection mc = Regex.Matches(str, @"(?n)(?<=^|--) ( (?<=^|-) (?<push>')? (?<type> (?(push) (?:[^']|'')+ | [^-]+ ) ) (?(push)'|) (?(--|$)|-) )+ (?=$|--) ", RegexOptions.IgnorePatternWhitespace); List<string[]> result = new List<string[]>(); foreach (Match m in mc) { List<string> s = new List<string>(); foreach (Capture c in m.Groups["type"].Captures) { s.Add(c.Value.Replace("''","'")); } result.Add(s.ToArray()); } 最终结果就是: new List<string[]> { new string[] { "cpu", "3.0g" }, new string[] { "color", "red", "green", "black" }, new string[] { "price", "5000", "8000" }, new string[] { "weight", "3-" }, new string[] { "keywords", "levi's" }, } 这只是提供了一个思路,也并非遇到什么问题都想着正则,哪个方便用哪个呗。