当前位置:编程学习 > C#/ASP.NET >>

求一正则表达式


//按逗号分组,如果逗号在引号内忽略,多谢!
            string strs = "\"64031,TJ,Han,DK,SD,GJ\",100401,\"5432IL\",CA,'1075',10000,30,4000";
            string[] results = Regex.Split(strs, @"(?<!""[^"",]+),(?![^"",]+"")")
                              .Select(s => s.Trim(new char[] { '\'', '"' })).ToArray();
            results.ToList().ForEach(r => Console.WriteLine(r));
--------------------编程问答--------------------
string[] result = Regex.Matches(yourStr,@"(['""]|(?<a>,))(?<r>((?!\1).)+)(?(a)(?:\1|$)|\1)").Select(m=>m.Groups["r"].Value).ToArray();
--------------------编程问答-------------------- 我去,这个东西居然用了15分钟。 --------------------编程问答-------------------- string[] result = Regex.Matches(yourStr,@"(['""]|(?<a>,))(?<r>((?!\1).)+)(?(a)(?:\1|$)|\1)").Select(m=>m.Groups["r"].Value).ToArray();  --------------------编程问答--------------------
string[] result = Regex.Matches(yourStr,@"(?<=(['""]|(?<a>,)))(?<r>((?!\1).)+)((?(a)(\1|$)|\1,))").Select(m=>m.Groups["r"].Value.Trim(new char[] { '\'', '"' })).ToArray();


改一下…… --------------------编程问答--------------------
	var result = Regex.Split(strs,@"(['""].*?['""])")
  .SelectMany(v=>(v.StartsWith("'")||v.StartsWith("\""))?new string[]{v}:v.Trim(',').Split(new char[]{',','"'}))
  .ToArray();
--------------------编程问答-------------------- 测试用例1:
 
string strs = "\"64031,TJ,Han,DK,SD,GJ\",100401,\"5432IL,5432IL\",CA,'1075,2075',10000,30,4000";

结果:

"64031,TJ,Han,DK,SD,GJ"
 
100401
 
"5432IL,5432IL"
 
CA
 
'1075,2075'
 
10000
 
30
 
4000

 
--------------------编程问答--------------------
var result = Regex.Split(strs,@"(['""].*?['""])")
  .SelectMany(v=>(v.StartsWith("'")||v.StartsWith("\""))?new string[]{v}:v.Trim(',').Split(new char[]{','}))
  .ToArray();
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,