我正在尝试使用正则表达式拆分解析文件,它适用于'\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
这部分有两个我希望被忽略的标签:
"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个cols,被我的数据表拒绝,因为标题只有36个cols,我想解决这个问题。
答案 0 :(得分:0)
正则表达式不是正确的工具。
您基本上有CSV格式,它是“制表符分隔”,而不是“逗号分隔”,但它的工作方式完全相同。因此,找到CSV parser并使用它 - 分离字符通常是可配置的。
答案 1 :(得分:0)
如果您有一个简单的CSV文件,那么正则表达式拆分通常是处理它的最简单方法。
但是,如果您的CSV文件包含更复杂的元素,例如包含分隔符或换行符的引用字段,则此方法将不再有效。正确解析这些类型的文件并不是一件小事,因此您应尽可能使用库。
this question的答案为可以读取CSV文件的C#库提供了几个选项。
答案 2 :(得分:0)
如果你真的需要一个正则表达式,你可以尝试这样的事情:
(?!\t")\t(?!\t")