可能重复:
Parsing CSV files in C#
我有一个解析管道分隔文件的C#应用程序。它使用Regex.Split方法:
Regex.Split(line, @"(?<!(?<!\\)*\\)\|")
然而,最近一个数据文件遇到了一个数据字段中包含的管道。有问题的数据字段使用引用的标识符,因此当您在Excel中打开时,它会正确打开。
例如,我有一个看起来像这样的文件:
Field1 | Field2 |“字段3在引号内有| | Field4
当我使用上面的正则表达式时,它解析为:
字段1
字段2
领域3有一个
在报价内
Field4
我希望
字段1
字段2
字段3具有|在报价内
Field4
我做了大量的研究,似乎无法让Regex.Split在管道上拆分文件,但尊重引用的标识符。非常感谢任何帮助!
答案 0 :(得分:1)
这是一个快速的表达式,我把它放在一起,而不是似乎做的伎俩:
"([^"]+)"|([^\|]+)
虽然你的表达似乎也在做一些事情,所以你可能需要在此表达式中添加任何其他需求。我在答案中忽略了它们,因为它们没有在问题中解释,因此我不能在不知道它们为什么存在的情况下提供解决方案 - 事实上它们根本不需要在那里。
另外,我的表达式忽略了空字段(即1 || 2 | 3只会出现1,2和3)我不知道这是否是你需要的,如果它不是让我知道,我可以将表达式改为适合这种情况的东西。
希望这无论如何都有帮助。