我必须在 VB.NET 中解析一个字符串,它具有以下结构
- 由新行分隔的记录
- 每条记录的固定字段数,用逗号分隔
- 字段可以被引用(字符串)或不被引用(其他类型的数据 - 日期、整数等)
- 注释字段(字符串)可以包含换行符和逗号
因此,由于第 4 点,如果在奇数和偶数引号之间(例如,如果在引号 1 和 2 之间,它们在注释字段中并且必须被忽略,但如果在引号 2 之间,则必须忽略逗号和新行作为字段/记录分隔符) 3,它们是字段/记录分隔符。
我可以为此编写手动解析代码,但认为正则表达式可能更可靠。但我对正则表达式的经验非常有限。
示例字符串
(记录1)
10,"测试",10.1,,,"123"
(记录2)
20,"测试,有逗号
和换行",,2.1,,"aaa"
所以实际的字符串是
10,"Test",10.1,,,"123"
20,"Test, 有逗号
和换行",,2.1,,"aaa"
编辑:
我需要添加更多说明:
1. 记录可以有更多或更少的 4 个字段
2. 字段可以为空
所以一个实际的测试输入字符串可以是
10,"Test",10.1,,,"123"
20,"Test, 有逗号
和换行",,2.1,,"aaa"
所以显然问题应该分为两部分:
- 提取记录(新行不在引号之间)
- 对于每条记录,提取字段(用逗号分隔,不在引号之间)
我应该如何拆分正则表达式(或有两个正则表达式)来匹配这个?
谢谢