鉴于以下数据,我想要一个正则表达式来提取每个逗号分隔的值。但是,双引号值可以包含逗号。
"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,,,,
这是我到目前为止的表达方式:
(?<=^|,)(?:(?:(?<=\")([^\"]*)(?=\"))|(?:(?<![\"])([^,\"]*)(?![\"])))(?=$|,)
双引号值不匹配。我究竟做错了什么? (此正则表达式被传递到预先存在的代码中 - 我无法重写系统。)
最佳答案
怎么样:
(?<=^|,)(("[^"]*")|([^,]*))(?=$|,)
第一种选择是:
("[^"]*")
匹配 "
后跟任何不是 "
的内容,后跟 "
第二种选择是:
([^,]*)
匹配 ,
之外的任何内容
关于c# - CSV 中双引号值的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23527369/