正则表达式—解析CSV文件
来源:互联网 发布:java命令行为 编辑:程序博客网 时间:2024/05/18 01:24
不同程序有不同的CSV格式,微软CSV格式文件中得到格式是用逗号将不同的字段进行分割,或者当字段包含逗号时候用双引号分割,举例如下:
一、微软CSV格式匹配
【文本】
your dollors,10000, 27 years old ,,”10,000”,”it is “10 Grand”,baby”,10k
这个例子中包含了七个字段,分别是
your dollors
10000
27 years old
空字段
10,000
it is “10 Grand”,baby
10k
【难点】在于“10,000”和“it is “10 Grand”,baby”,双引号中嵌套双引号和逗号
1、[^,"]+
可以获取之前用逗号和双引号分割的字段,但是这显然不足以将这七个字段完全正确的分割开;
2、双引号中包含逗号或双引号之间的文本,"(?:[^"]|"")*"
3、双引号嵌套:如果是双层嵌套,可以用表达式"[^,"]*"[^"]*"[^"]*"
因此,用以下表达式可以正确将文本分开
【表达式】
[^,"]+|,,|(?:"[^,"]*"[^"]*"[^"]*)"|"(?:[^"])*" 分解:[^,"]+ #普通字段|,, #空字段|(?:"[^,"]*"[^"]*"[^"]*") #双层双引号嵌套|"(?:[^"])*" #双引号嵌套逗号
这种双引号的嵌套解决办法有待进一步分析,如下
二、双引号中包含多个双引号
如果一个双引号中间有很多个双引号呢?,比如
“english: “a”, “b”, “c”, “d”, “e” and others”
【多个双引号的表达式】
(?:"[^,"]*(?:"[^"]*"[^"]*)*[^"]*)"
分解:(?: " #最外侧起始双引号 [^,"]* #最外侧起始双引号与第二个双引号间的文本 (?:"[^"]*"[^"]*)+ #出现几对双引号,量词* [^"]* #倒数第二个双引号与最外侧终止双引号之间文本) " #最外侧终止双引号
存在问题:当有多个这样的双引号时候,难以分辨
0 0
- 正则表达式—解析CSV文件
- 正则表达式和java解析csv文件
- 解析CSV正则表达式最新
- 用正则表达式和java解析csv文件
- 正则表达解析CSV文件
- java正则解析读取csv文件
- 正则表达式划分CSV
- Python 正则表达式改变csv文件的分隔符
- Python 正则表达式从CSV文件提取特定列
- 使用正则表达式解决CSV文件导入问题
- 用正则表达式解析C#文件
- 用正则表达式解析C#文件
- 用正则表达式解析C#文件
- 用正则表达式解析C#文件
- 用正则表达式解析C#文件(Updated)
- 用正则表达式解析C#文件(updated)
- 用正则表达式解析C#文件
- 用正则表达式解析C#文件(Updated)
- MATLAB中矩阵的逻辑索引方法
- 关于CentOS7配置SSH免密登录,以及遇到的配置好后还需要输入密码的问题
- Android设置透明、半透明等效果
- BZOJ1806: [Ioi2007]Miners 矿工配餐
- “类名.this” 与 “类名.class”
- 正则表达式—解析CSV文件
- 设计师一直追求真实效果图,技术不断提升秘密
- android 图片的相关第三方开源库
- jdk1.5,jdk6,jdk7,jdk8的特性总结
- 指向函数的指针 1
- C#实现一维数组返回最大值
- 3D数学基础之C#实现矩阵变换
- 文章标题
- 指向函数的指针 2