java - 通过正则表达式过滤日志文件

标签 java regex pattern-matching

我需要从日志中过滤数据,并且我需要过滤数据,该数据包含时间 13:00-14:59。 但这个和许多其他诱惑都失败了。什么也没有显示 Log file

我的方法:

public static void Proccesing(File file){
    String formula = ".*1(3 [0-5][0-9]|4 [0-5][0-9]).*";

    try{
        BufferedReader rd= new BufferedReader(new FileReader(file));
        String line = rd.readLine();
        Pattern pattern = Pattern.compile(formula);
        Matcher matcher = pattern.matcher(line);

        while(line != null){
            matcher.reset(line);
            if(matcher.find()){
                line = rd.readLine();
                System.out.println(line);

            }

        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

最佳答案

您可以使用 Java8 方法过滤日志:

public static void process(String logFile) throws IOException {
    Files.lines(Path.of(logFile))
        .filter(s -> s.matches(".*1(3 [0-5][0-9]|4 [0-5][0-9]).*"))
        .forEach(System.out::println);
}

关于java - 通过正则表达式过滤日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61417888/

相关文章:

Scala 模式与函数参数匹配

java - 当 Bootstrap 调用远程模式时,Google reCaptcha 不会加载

Java - 避免代码中的长 SQL 查询

java - 从 inputStream 中读取字节的 Int 值

包含字母、数字和一个连字符的用户名的 Javascript 正则表达式

Java正则表达式跳过匹配

java - selenium webdriver 中的 Keys.UP 和 Keys.ARROW_UP 有什么区别?

javascript - 帮助使用正则表达式

如果字符串包含不在 RegEx 中的字符,则返回 Javascript RegEx

java - 替换所有出现的 {.? !"><' ,/\|@#$%^&* ~`-_=+} with a word "myWord"