【发布时间】:2018-07-30 08:39:47
【问题描述】:
这是我的正则表达式:
var separator = '|';
Regex csvSplit = new Regex("(?:^|" + separator + ")(\"(?:[^\"]+|\"\")*\"|[^" + separator + "]+)", RegexOptions.Compiled);
var test = csvSplit.Matches("10734|Vls, p|6||1.5");
如您所见,有一个空记录。
我期待索引 3 上有空字符串,但它被跳过了。我做错了什么?
【问题讨论】:
-
你为什么不从一开始就这样做using the CSV parser?
-
.Split(new [] { '|' }, StringSplitOptions.RemoveEmptyEntries)正则表达式是强制性的吗?或者基本的Split 是engouth -
@DragandDrop 是强制性的,我不想要一个全新的解决方案,我只是想修改正则表达式。
-
好的,那你为什么不首先转义分隔符呢?
|是一个特殊的字符,一个交替运算符。你的模式看起来像(?:^||)("(?:[^"]+|"")*"|[^|]+)和(?:^||)真的很可疑,你的意思是(?:^|\|)?