gpt4 book ai didi

java - 在 Java 中使用 Regex 解析 CSV 文件

转载 作者:行者123 更新时间:2023-12-02 00:12:31 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,它从目录中读取 CSV 文件,使用正则表达式解析文件的每一行,并在匹配正则表达式模式后显示这些行。例如,如果这是我的 csv 文件的第一行

1997,Ford,E350,"ac, abs, moon",3000.00

我的输出应该是

1997 Ford E350 ac, abs, moon 3000.00

我不想使用任何现有的 CSV 库。我不擅长正则表达式,我使用了在网上找到的正则表达式,但它在我的程序中不起作用这是我的源代码,如果有人告诉我为了使我的代码正常工作而需要修改的位置和内容,我将不胜感激。请解释一下。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.CharBuffer;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;
import java.util.regex.Pattern;
import java.util.regex.Matcher;


public class RegexParser {

private static Charset charset = Charset.forName("UTF-8");
private static CharsetDecoder decoder = charset.newDecoder();
String pattern = "\"([^\"]*)\"|(?<=,|^)([^,]*)(?=,|$)";

void regexparser( CharBuffer cb)
{
Pattern linePattern = Pattern.compile(".*\r?\n");
Pattern csvpat = Pattern.compile(pattern);
Matcher lm = linePattern.matcher(cb);
Matcher pm = null;

while(lm.find())
{
CharSequence cs = lm.group();
if (pm==null)
pm = csvpat.matcher(cs);
else
pm.reset(cs);
if(pm.find())
{

System.out.println( cs);
}
if (lm.end() == cb.limit())
break;

}

}

public static void main(String[] args) throws IOException {
RegexParser rp = new RegexParser();
String folder = "Desktop/sample";
File dir = new File(folder);
File[] files = dir.listFiles();
for( File entry: files)
{
FileInputStream fin = new FileInputStream(entry);
FileChannel channel = fin.getChannel();
int cs = (int) channel.size();
MappedByteBuffer mbb = channel.map(FileChannel.MapMode.READ_ONLY, 0, cs);
CharBuffer cb = decoder.decode(mbb);
rp.regexparser(cb);
fin.close();

}




}

}

这是我的输入文件

年份、品牌、型号、描述、价格

1997年,福特,E350,“ac,abs,moon”,3000.00

1999,雪佛兰,“冒险”“加长版”“”,“”,4900.00

1999,雪佛兰,“Venture”“加长版,非常大”“”,“”,5000.00

1996 年,吉普车,大切诺基,“必须出售!

空气,天窗,已加载”,4799.00

我得到的输出与我的代码中的问题在哪里?为什么我的正则表达式对代码没有任何影响?

最佳答案

使用正则表达式似乎“很花哨”,但对于 CSV 文件(至少在我看来)是不值得的。对于我的解析,我使用 http://commons.apache.org/csv/ 。它从来没有让我失望过。 :)

关于java - 在 Java 中使用 Regex 解析 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12446092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com