我的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
提前致谢。
答案 0 :(得分:3)
不要使用正则表达式解析CSV。使用知道的图书馆做得很好。例如OpenCSV或Apache 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
可能您需要删除"
和空格。