从CSV文件中读取文本块 - vb.net

时间:2011-10-21 01:38:11

标签: vb.net parsing text-parsing

我需要根据某些规则解析CSV文件,其中文本块以不同的方式处理,例如

userone,columnone,columntwo
userthirteen,columnone,columntwo
usertwenty,columnone,columntwo

customerone,columnone<br>
customertwo,columntwo<br>

singlevalueone
singlevaluetwo

singlevalueone_otherruleapplies
singlevaluethree_otherruleapplies

每个文本块都将被分组,因此前三行将使用某些规则进行解析,依此类推。请注意,最后两个组只有一个列,但每个组必须以不同的方式处理。

我有机会向客户推荐文件的格式,所以我想提出以下建议。

[group 1]
userone,columnone,columntwo
userthirteen,columnone,columntwo
usertwenty,columnone,columntwo

[group N]
rowN

一些部分,比如几年前的INI文件。但是我想听听你的意见,因为我认为必须有更好的方法来解决这个问题。

我建议使用XML,但客户更喜欢文本文件。

欢迎任何建议。

m0dest0。

聚苯乙烯。使用VB.net和VS 2008

1 个答案:

答案 0 :(得分:1)

如果每行具有相同的格式,则可以将正则表达式组设置为枚举行模式,如果格式不限制为单行,则可以使用枚举多行。对于多行中的每一行,您可以在模式中包含\ n以跨越多行来查找模式。如果它在单行上,您不需要在正则表达式匹配模式中包含\ n也称为回车换行符。

vb.net以及许多其他现代编程语言都对分组操作有广泛的支持。您可以使用索引组或命名组。

每个名称(如header1或您想要命名的名称)都采用以下格式:<myname>
有关详细信息,请参阅此链接:How do I access named capturing groups in a .NET Regex?

祝你好运。