• java正则表达式应用


    一:抓取网页中的Email地址

    利用正则表达式匹配网页中的文本

    [\\w[.-]]+@[\\w[.-]]+\\.[\\w]+

    将网页内容分割提取

    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("C:\\emailSpider.html"));
                String line = "";
                while((line=br.readLine()) != null) {
                    parse(line);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                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());
            }
        }
    
    }

    打印结果:

    867124664@qq.com
    260678675@QQ.com
    806208721@qq.com
    hr_1985@163.com
    32575987@qq.com
    qingchen0501@126.com
    yingyihanxin@foxmail.com
    1170382650@qq.com
    1170382650@qq.com
    yingyihanxin@foxmail.com
    qingchen0501@126.com
    32575987@qq.com
    hr_1985@163.com

    现在你找到这么多邮箱地址,用上JavaMail的知识,你可以群发垃圾邮件了,呵呵!!!

    二:代码统计

    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("E:\\Workspaces\\eclipse\\Application\\JavaMailTest\\src\\com\\java\\mail");
            File[] codeFiles = f.listFiles();
            for(File child : codeFiles){
                //只统计java文件
                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) {
                    //去掉注释符/*前面可能出现的空白
                    line = line.trim();
                    //空行 因为readLine()将字符串取出来时,已经去掉了换行符\n
                    //所以不是"^[\\s&&[^\\n]]*\\n$"
                    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();
                    }
                }
            }
        }
    
    }
  • 相关阅读:
    【干货分享】流程DEMO-制度发文和干部任免
    如何让流程表单禁用选人控件,但可以通过代码赋值?
    让任正非愤怒的到底是华为财管团队还是流程本身?
    品牌营销:不要Beat,要逼格!
    流程再造:以信息化管理解救“中国制造”
    三星Note 7停产,原来是吃了流程的亏
    BAT“搅局”B2B市场,CIO们准备好了吗?
    胡理辉:风电王国里的流程管控人
    周义:建设流程管理系统 我还在不停努力
    步步高彭雄:弄潮“互联网+零售”从端到端流程开始
  • 原文地址:https://www.cnblogs.com/ITtangtang/p/2478061.html
Copyright © 2020-2023  润新知