0

我正在尝试使用正则表达式拆分来解析文件,它适用于'\t'字符,但有些行在'\t'字段内部而不是作为分隔符。

喜欢 :

G2226   TEST 1  C   29  Internal Head Office    D   Head Office ZZZ Unassigned  10910   10/10/2011  11/10/2011  10/10/2011  11/10/2011  "Test call  Sort the customer out some data. See the customer again tomorrow to talk about Prod     "   Mr ABC          Mr ABC                  Mr  ABC Mr  ABC Credit Requested    BDM Call    Internal Note   10

这部分有 2 个标签,我希望被忽略:

"Test call  Sort the customer out some data. See the customer again tomorrow to talk about Prod\t\t"

好消息是,它们包含在双引号中,但我不知道如何忽略它们,有什么想法吗?

编辑:

我的目标是获得 36 列,Regex.Split(lineString,'\t')使用后某些列可能会出现更多,'\t'因为它们'\t'在某些字段中包含字符。我想忽略那些。上面的结果是 38 列,我的数据表拒绝了,因为标题只有 36 列,我想解决这个问题。

4

3 回答 3

0

如果您有一个简单的 CSV 文件,那么正则表达式拆分通常是处理它的最简单方法。

但是,如果您的 CSV 文件包含更复杂的元素,例如包含分隔符或换行符的引用字段,则此方法将不再有效。正确解析这些类型的文件并非易事,因此您应该尽可能使用库。

这个问题的答案为可以读取 CSV 文件的 C# 库提供了几个选项。

于 2013-02-15T12:47:07.227 回答
0

如果你真的需要一个正则表达式,你可以尝试这样的事情:

(?!\t")\t(?!\t")
于 2013-02-15T12:47:29.393 回答
0

正则表达式不是正确的工具。

您基本上具有 CSV 格式,它是“制表符分隔”,而不是“逗号分隔”,但它的工作原理完全相同。因此,找到一个CSV 解析器并使用它 - 分隔字符通常是可配置的。

于 2013-02-15T12:40:23.010 回答