猿问

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

我有一个采用这种格式的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/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"

我发现了这个正则表达式:,但它不能很好地完成这项工作。([^,"]+|"([^"]|)*")


有人可以给我一个好的提示吗?


GCT1015
浏览 101回答 1
1回答

慕的地6264312

使用 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/201115:15:11AT45 - Km 2 +300   Foo PL - 046070096123456_110922_151511_000001M.jpg123456DBx 4U0242800810095AB123CD----
随时随地看视频慕课网APP

相关分类

Java
我要回答