我需要根据某些规则解析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
答案 0 :(得分:1)
如果每行具有相同的格式,则可以将正则表达式组设置为枚举行模式,如果格式不限制为单行,则可以使用枚举多行。对于多行中的每一行,您可以在模式中包含\ n以跨越多行来查找模式。如果它在单行上,您不需要在正则表达式匹配模式中包含\ n也称为回车换行符。
vb.net以及许多其他现代编程语言都对分组操作有广泛的支持。您可以使用索引组或命名组。每个名称(如header1或您想要命名的名称)都采用以下格式:<myname>
有关详细信息,请参阅此链接:How do I access named capturing groups in a .NET Regex?。