求一正则表达式
--------------------编程问答--------------------
//按逗号分组,如果逗号在引号内忽略,多谢!
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,@"(['""].*?['""])")--------------------编程问答-------------------- 测试用例1:
.SelectMany(v=>(v.StartsWith("'")||v.StartsWith("\""))?new string[]{v}:v.Trim(',').Split(new char[]{',','"'}))
.ToArray();
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#