【问题标题】:parsing CSV file in java with " in the CSV file用 CSV 文件中的 " 在 java 中解析 CSV 文件
【发布时间】:2014-03-30 15:21:34
【问题描述】:

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

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

我的正则表达式:

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

aColumnValue 是一个字符串数组。

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

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

正确的令牌数应该是:6 实际的令牌应该是

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

提前致谢。

【问题讨论】:

    标签: java regex csv


    【解决方案1】:

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

    【讨论】:

    • 完美。非常感谢。我发现有效载荷中可能存在很多问题。
    【解决方案2】:

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

    【讨论】:

    • 完美。非常感谢。我发现有效载荷中可能存在很多问题。
    【解决方案3】:
    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
    

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

    【讨论】:

      猜你喜欢
      • 2012-09-08
      • 1970-01-01
      • 2011-06-12
      • 2018-06-04
      • 2013-02-19
      • 2014-11-06
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多