为了账号安全,请及时绑定邮箱和手机立即绑定

csv 文件的正则表达式由空格和可选引号分隔

csv 文件的正则表达式由空格和可选引号分隔

GCT1015 2022-09-28 14:31:17
我有一个采用这种格式的csv文件:22/09/2011 15:15:11 "AT45 - Km 2 +300   Foo " "PL - 0460" 70 096 123456_110922_151511_000001M.jpg 123456 "DBx 4U02" 428008 100 95 "AB123CD"22/09/2011 15:15:16 "AT45 - Km 2 +300   Foo " "PL - 0460" 70 087 123456_110922_151516_000002M.jpg 123456 "DBx 4U02" 428008 100 95 "EF456GH"22/09/2011 15:16:30 "AT45 - Km 2 +300   Foo " "PL - 0460" 70 079 123456_110922_151630_000005M.jpg 123456 "DBx 4U02" 428008 200 96 "LM789NP"我需要一个正则表达式来正确拆分每个值,例如第一行是:22/09/201115:15:11"AT45 - Km 2 +300   Foo ""PL - 0460"70 096 123456_110922_151511_000001M.jpg123456"DBx 4U02"42800810095"AB123CD"我发现了这个正则表达式:,但它不能很好地完成这项工作。([^,"]+|"([^"]|)*")有人可以给我一个好的提示吗?
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

使用 CSV 解析器可以更好地处理此类任务。其中之一是 http://opencsv.sourceforge.net/ 它允许我们指定您自己的分隔符(以及许多其他内容)。


String csv =

        "22/09/2011 15:15:11 \"AT45 - Km 2 +300   Foo \" \"PL - 0460\" 70 096 123456_110922_151511_000001M.jpg 123456 \"DBx 4U02\" 428008 100 95 \"AB123CD\"\n" +

        "22/09/2011 15:15:16 \"AT45 - Km 2 +300   Foo \" \"PL - 0460\" 70 087 123456_110922_151516_000002M.jpg 123456 \"DBx 4U02\" 428008 100 95 \"EF456GH\"\n" +

        "22/09/2011 15:16:30 \"AT45 - Km 2 +300   Foo \" \"PL - 0460\" 70 079 123456_110922_151630_000005M.jpg 123456 \"DBx 4U02\" 428008 200 96 \"LM789NP\"";


CSVParser parser = new CSVParserBuilder().withSeparator(' ').build();


CSVReader reader = new CSVReaderBuilder(new StringReader(csv))

        .withCSVParser(parser)

        .build();


for (String[] row : reader){

    for (String str : row){

        System.out.println(str);

    }

    System.out.println("----");

}

输出(至少其开头):


22/09/2011

15:15:11

AT45 - Km 2 +300   Foo 

PL - 0460

70

096

123456_110922_151511_000001M.jpg

123456

DBx 4U02

428008

100

95

AB123CD

----


查看完整回答
反对 回复 2022-09-28
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信