Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加快大型文件中的正则表达式搜索_Java_Regex - Fatal编程技术网

Java 加快大型文件中的正则表达式搜索

Java 加快大型文件中的正则表达式搜索,java,regex,Java,Regex,我有从5Mb到600MB的大文件。我需要解析它们并用正则表达式进行比较。但这需要一段时间来比较。例如,500kb文件的代码为35秒 这是我的密码: Date currentTime = new Date(); String fileContents = ""; File file = new File(filePath); BufferedReader br = new BufferedReader(new FileReader(file)); while((fileContents =

我有从5Mb到600MB的大文件。我需要解析它们并用正则表达式进行比较。但这需要一段时间来比较。例如,500kb文件的代码为35秒

这是我的密码:

Date currentTime = new Date(); 
String fileContents = ""; 
File file = new File(filePath); 
BufferedReader br = new BufferedReader(new FileReader(file)); 
while((fileContents = br.readLine()) !=null) 
{ 
    fileContents += br.readLine() + "\n"; 
    regexCompare(fileContents); 
} 
br.close(); 
Date newTime = new Date(); 
long msDelay = newTime.getTime() - currentTime.getTime(); 
timeLabel.setText("Maked in " + msDelay + " ms");
我的正则表达式函数:

private int regexCompare(String text) {
    if (text.isEmpty()) return 0;
        Matcher m = Pattern.compile(symbolsPattern).matcher(text);

    while (m.find()) {
        allMatches.add(m.group());
    }

    for (String f :allMatches) {
            System.out.println(f);
    }

    return 1;
}

有人知道我应该怎么做才能更快吗?

您找到了多少个匹配项?如果消除
System.out.println(f),是否还需要35秒语句?为什么在累积行的循环中调用
regexCompare()
?每次添加一行时,您都在处理整个字符串。@Alan Moore是对的,您一次只能比较一行。代码不完整。正则表达式可能存在严重的问题,但是缺少了它。
symbolsPattern
中的正则表达式是什么?请编辑您的问题以显示它。