如何在正则表达式匹配后跳过标题并使用BufferReader读取下一行

时间:2016-07-19 11:20:37

标签: java regex

我有一个继续打印行的流,如下所示:

11:19:54 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:19:55 AM     all      0.00      0.00      1.00      0.00      0.00     99.00
Average:        all      0.00      0.00      1.00      0.00      0.00     99.00

11:19:55 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:19:56 AM     all      0.00      0.00      1.00      0.00      0.00     99.00
Average:        all      0.00      0.00      1.00      0.00      0.00     99.00

....等等

Java代码是:

    public final static String REGEX_STARTS_WITH_TIME = "[0-9]{2}:[0-9]{2}:[0-9]{2}\\s+[A-Z]{2}\\s";
    public final static String REGEX =  REGEX_STARTS_WITH_TIME + "CPU\\s+%usr\\s";
    String line;
    try {
        InputStream is = process.getInputStream();                
        BufferedReader br = new BufferedReader(new InputStreamReader(is));

        while ((line = br.readLine()) != null) {
            line.matches(REGEX);
         //Here I want to read the next line by skipping the header.
        }        
        br.close();
    } catch (IOException e) {
        ......
    }

我想跳过标题,只读下一行。

1 个答案:

答案 0 :(得分:1)

您可以使用string#contains("CPU")检查该行是否包含该子字符串。如果是,(那么它是标题),只需在循环中调用continue

旁注:这也可以使用indexOf()来实现。我在这里没有看到任何使用正则表达式的理由 。