【问题标题】:Need a Java Regular Expression (regexp) to split a complex CSV file需要 Java 正则表达式 (regexp) 来拆分复杂的 CSV 文件
【发布时间】:2013-12-26 11:24:18
【问题描述】:

我需要拆分一个包含订单的 CSV 文件(我以字符串的形式读入)。这个 CSV 的解析规则并不复杂:

每个订单有几行(无固定编号)

每个订单以一行开头(发起者):

111;222;dynamic content

每个订单以两行结尾(终止符):

111;333;dynamic content
111;333;dynamic content

发起者和终结者必须包含在拆分的结果中。

[编辑] 我不需要使用正则表达式。这只是我的第一个想法。我也可以使用另一种解决方案,如果它更容易的话。 [/编辑]

我对正则表达式没有太多经验,所以即使开始也需要很长时间:-( 例如,我尝试了以下方法:

String[] parts = body.split("111;333;.*111;333;");

预期结果:拆分器为 111;333;至 111;333; - 请记住,每个订单都以两行结尾,均以 111;333 开头;因此,String[] 应该包含正确数量的 IMO 订单。但是,数组中只有一个字符串包含所有内容。

我玩过一些其他的正则表达式,但我不能得到一个好的结果。有人可以帮我告诉我这个拆分的正则表达式吗?谢谢...

最好的问候, 启

【问题讨论】:

  • 您是否必须为此使用正则表达式?为什么不是一个简单的直接 String.split() 按行然后按字段分隔符?以Here 为例。
  • 不确定你想用正则表达式来做到这一点。它会很毛茸茸,很难维护。改为使用标记器解析行。
  • 我不必使用正则表达式!这只是我的第一个想法。当然,我们将不胜感激更简单的解决方案!
  • CSV 是 Comma-Separated Values(或 Character-Separated Values)的首字母缩写词,这意味着文件的每一列都由“;”分隔或其他角色。您可以使用该字符简单地拆分行的字符串并获取数据。
  • @KaiWähner 链接我在第一条评论中发布了一个使用 String.split() 的示例

标签: java regex string csv


【解决方案1】:

我真的不鼓励你使用正则表达式来尝试这个任务。有许多 Java 库可以为您执行此操作。这些库经过测试并且非常知名。随便拿一个。您将节省时间和精力。我有使用opencsv 的良好经验。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 2013-12-07
    • 1970-01-01
    • 2013-08-11
    • 2015-09-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多