2014-02-27 145 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 

可能你需要刪除"和空間。