使用“在CSV文件中解析java中的CSV文件

时间:2014-02-27 09:35:51

标签: java regex csv

我的CSV文件包含以下文字:

a, b, 0, "0, 1, 2", ""ab cd", 5", 10

我的正则表达式:

aColumnValue = dataRow.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");

其中aColumnValue是一个String数组。

此正则表达式失败,因为在正则表达式关闭之前的'''上搜索下一个标记。

请帮助找到正确的正则表达式。

令牌的正确计数应为:6 而实际的代币应该是

a
b
0
0, 1, 2,
"ab cd", 5
10

提前致谢。

3 个答案:

答案 0 :(得分:3)

不要使用正则表达式解析CSV。使用知道的图书馆做得很好。例如OpenCSVApache commons CSV

答案 1 :(得分:0)

可能会有更多问题。您应该使用一些CSV解析器,如opencsv http://opencsv.sourceforge.net/

答案 2 :(得分:0)

String input = "a, b, 0, \"0, 1, 2\", \"\"ab cd\", 5\", 10";
String[] parts = input.split(",(?=([^\"]*\"[^\"]*\")*(?![^\"]*\"))");

parts变量包含:

a
 b
 0
 "0, 1, 2"
 ""ab cd", 5"
 10

可能您需要删除"和空格。