我需要拆分包含订单的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,但我无法取得好成绩。有人可以帮助我并告诉我这个分裂的正则表达式吗?感谢...
祝你好运, 启
答案 0 :(得分:4)
我真的不鼓励你使用正则表达式来尝试这个任务。有很多Java库可供您使用。这些库经过测试并且非常有名。带上任何一个。您将节省时间和精力。我有使用opencsv的良好经验。