需要Java正则表达式(正则表达式)来拆分复杂的CSV文件

时间:2013-12-09 11:12:15

标签: java regex string csv

我需要拆分包含订单的CSV文件(我读作字符串)。解析此CSV的规则并不复杂:

每个订单都有多行(没有固定号码)

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

111;222;dynamic content

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

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

启动器和终结器必须包含在拆分结果中。

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

我对regexp的经验不多,所以即使开始也需要很长时间:-( 例如,我尝试了以下内容:

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

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

我玩了一些其他的regexp,但我无法取得好成绩。有人可以帮助我并告诉我这个分裂的正则表达式吗?感谢...

祝你好运, 启

1 个答案:

答案 0 :(得分:4)

我真的不鼓励你使用正则表达式来尝试这个任务。有很多Java库可供您使用。这些库经过测试并且非常有名。带上任何一个。您将节省时间和精力。我有使用opencsv的良好经验。