c# - CSV 中双引号值的正则表达式

标签 c# .net regex

鉴于以下数据,我想要一个正则表达式来提取每个逗号分隔的值。但是,双引号值可以包含逗号。

"SMITH, JOHN",1234567890,"12/20/2012,11:00",,DRSCONSULT,DR BOB - OFFICE VISIT - CONSULT,SLEEP CENTER,1234567890,,,"a, b"
"JONES, WILLIAM",1234567890,12/20/2012,12:45,,DRSCONSULT,DR BOB - OFFICE VISIT - CONSULT,SLEEP CENTER,,,,

这是我到目前为止的表达方式:

(?<=^|,)(?:(?:(?<=\")([^\"]*)(?=\"))|(?:(?<![\"])([^,\"]*)(?![\"])))(?=$|,)

Regular expression visualization

Debuggex Demo

双引号值不匹配。我究竟做错了什么? (此正则表达式被传递到预先存在的代码中 - 我无法重写系统。)

最佳答案

怎么样:

(?<=^|,)(("[^"]*")|([^,]*))(?=$|,)

Regular expression visualization

Debuggex Demo

第一种选择是:

("[^"]*")

匹配 " 后跟任何不是 " 的内容,后跟 "

第二种选择是:

([^,]*)

匹配 , 之外的任何内容

关于c# - CSV 中双引号值的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23527369/

相关文章:

regex - 从 Linux 中的日志行过滤多个特定值

java - 如何将一个文件分割成多个token

c# - WPF:如何加速 Storyboard动画?

c# - 在 C# 中实现存储稀疏数据的表的最有效方法是什么

c# - 需要帮助确定小型 C# 数字到百分位数转换程序中的错误来源

c# - 使用数组语法初始化我的类

c# - 为什么 .NET/C# 不针对尾调用递归进行优化?

c# - 我可以检测到垃圾收集在 .NET 中运行的时刻吗?

c# - 在 VS2008 ASP.NET 项目中使用嵌入式文件

Javascript RegExp 仅用于特殊字符