首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# Regex拆分-逗号外部引号

C# Regex拆分-逗号外部引号
EN

Stack Overflow用户
提问于 2010-06-30 09:08:12
回答 7查看 56.1K关注 0票数 52

我得到了相当多的字符串(实际上是SQL代码的片段),格式如下:

代码语言:javascript
运行
复制
('ABCDEFG', 123542, 'XYZ 99,9')

我需要使用C#拆分这个字符串,以便获得:

  • 'ABCDEFG'
  • 123542
  • 'XYZ 99,9'

我最初使用的是一个简单的Split(','),但是由于最后一个参数中的逗号正在对输出造成破坏,所以我需要使用Regex来获得它。问题是,在正则表达式中我仍然很幼稚,而且我似乎无法破解这个模式,主要是因为在该字符串中,数值参数和α-数值参数都可能随时存在。

根据引号外的每个逗号,我能用什么来分割这个字符串?干杯

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-06-30 09:16:45

您可以在所有逗号上拆分,这些逗号后面有偶数的引号,使用下面的Regex查找它们:

代码语言:javascript
运行
复制
",(?=(?:[^']*'[^']*')*[^']*$)"

你会用它就像

代码语言:javascript
运行
复制
var result = Regex.Split(samplestring, ",(?=(?:[^']*'[^']*')*[^']*$)");
票数 89
EN

Stack Overflow用户

发布于 2018-01-16 06:10:27

代码语言:javascript
运行
复制
//this regular expression splits string on the separator character NOT inside double quotes. 
//separatorChar can be any character like comma or semicolon etc. 
//it also allows single quotes inside the string value: e.g. "Mike's Kitchen","Jane's Room"
Regex regx = new Regex(separatorChar + "(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))"); 
string[] line = regx.Split(string to split);
票数 35
EN

Stack Overflow用户

发布于 2021-02-25 18:25:32

我遇到了一个问题,它没有捕获空列。我将其修改为获得空字符串结果。

代码语言:javascript
运行
复制
var results = Regex.Split(source, "[,]{1}(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3147836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档