求一正则表达式

mustudent 2013-12-04 12:14:37

//按逗号分组,如果逗号在引号内忽略,多谢!
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));
...全文
153 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2013-12-04
  • 打赏
  • 举报
回复
var result = Regex.Split(strs,@"(['""].*?['""])")
					  .SelectMany(v=>(v.StartsWith("'")||v.StartsWith("\""))?new string[]{v}:v.Trim(',').Split(new char[]{','}))
					  .ToArray();
q107770540 2013-12-04
  • 打赏
  • 举报
回复
测试用例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
q107770540 2013-12-04
  • 打赏
  • 举报
回复
	var result = Regex.Split(strs,@"(['""].*?['""])")
					  .SelectMany(v=>(v.StartsWith("'")||v.StartsWith("\""))?new string[]{v}:v.Trim(',').Split(new char[]{',','"'}))
					  .ToArray();
兔子-顾问 2013-12-04
  • 打赏
  • 举报
回复
string[] result = Regex.Matches(yourStr,@"(?<=(['""]|(?<a>,)))(?<r>((?!\1).)+)((?(a)(\1|$)|\1,))").Select(m=>m.Groups["r"].Value.Trim(new char[] { '\'', '"' })).ToArray();
改一下……
  • 打赏
  • 举报
回复
string[] result = Regex.Matches(yourStr,@"(['""]|(?<a>,))(?<r>((?!\1).)+)(?(a)(?:\1|$)|\1)").Select(m=>m.Groups["r"].Value).ToArray();
  • 打赏
  • 举报
回复
我去,这个东西居然用了15分钟。
兔子-顾问 2013-12-04
  • 打赏
  • 举报
回复
string[] result = Regex.Matches(yourStr,@"(['""]|(?<a>,))(?<r>((?!\1).)+)(?(a)(?:\1|$)|\1)").Select(m=>m.Groups["r"].Value).ToArray();

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧