[Java] 正则表达式 02 EmailSpider 抓邮件, CodeCounter 统计程序有效代码行数

来源:互联网 发布:js数组遍历下标 编辑:程序博客网 时间:2024/05/21 20:21

EmailSpider.java

import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern;public class EmailSpider {    public static void main(String[] args) {        try {            BufferedReader br = new BufferedReader(new FileReader("D:\\share\\EmailHtm\\email.htm"));            String line = "";            while((line=br.readLine()) != null) {                parse(line);            }        } catch (FileNotFoundException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    private static void parse(String line) {        Pattern p = Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");        Matcher m = p.matcher(line);        while(m.find()) {            System.out.println(m.group());        }    }}

CodeCounter.java

import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class CodeCounter {        static long normalLines = 0;    static long commentLines = 0;    static long whiteLines = 0;        public static void main(String[] args) {        File f = new File("D:\\share\\JavaProjects\\CodeCounter\\src");        File[] codeFiles = f.listFiles();        for(File child : codeFiles){            if(child.getName().matches(".*\\.java$")) {                parse(child);            }        }        /*         *          * */                 System.out.println("normalLines:" + normalLines);        System.out.println("commentLines:" + commentLines);        System.out.println("whiteLines:" + whiteLines);            }    private static void parse(File f) {        BufferedReader br = null;        boolean comment = false;        try {            br = new BufferedReader(new FileReader(f));            String line = "";            while((line = br.readLine()) != null) { // readLine() 已经吃掉了后面的换行符号                line = line.trim();                if(line.matches("^[\\s&&[^\\n]]*$")) {                    whiteLines ++;                } else if (line.startsWith("/*") && !line.endsWith("*/")) {                    commentLines ++;                    comment = true;                 } else if (line.startsWith("/*") && line.endsWith("*/")) {                    commentLines ++;                } else if (true == comment) {                    commentLines ++;                    if(line.endsWith("*/")) {                        comment = false;                    }                } else if (line.startsWith("//")) {                    commentLines ++;                } else {                    normalLines ++;                }            }        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            if(br != null) {                try {                    br.close();                    br = null;                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }}

0 0
原创粉丝点击