【发布时间】:2012-08-09 09:40:05
【问题描述】:
我有一个解析管道分隔文件的 C# 应用程序。它使用 Regex.Split 方法:
Regex.Split(line, @"(?<!(?<!\\)*\\)\|")
然而,最近一个数据文件在其中一个数据字段中包含了一个管道。有问题的数据字段使用带引号的标识符,因此当您在 Excel 中打开时,它会正确打开。
例如,我有一个看起来像这样的文件:
Field1|Field2|"字段 3 在引号内有一个 |"|Field4
当我使用上面的正则表达式时,它会解析为:
字段1
字段2
字段 3 有一个
在引号内
字段4
当我想要时
字段1
字段2
字段 3 有一个 |在引号内
字段4
我已经进行了大量研究,似乎无法让 Regex.Split 在管道上拆分文件,但尊重引用的标识符。非常感谢任何帮助!
【问题讨论】:
-
不要使用正则表达式来处理 csv 文件,存在 csv 解析器,参见例如this answer
标签: c# regex pipe delimiter quoted-identifier