2014-02-27 148 views
0

我的CSV文件中有如下文字:解析CSV文件“CSV文件

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

我正则表达式:

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

其中aColumnValue是一个字符串数组

这在正则表达式关闭并搜索下一个标记之前,正则表达式在''之前失败。

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

令牌的正确数应为:6 和实际令牌应提前

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

感谢。

回答

3

不要使用正则表达式解析CSV。使用知道的库来做到这一点。例如OpenCSVApache commons CSV

+0

完美。非常感谢你。我发现在有效载荷中可能会有很多问题。 –

0

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

+0

完美。非常感谢你。我发现在有效载荷中可能会有很多问题。 –

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 

可能你需要删除"和空间。