zoukankan      html  css  js  c++  java
  • 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();
                    }
                }
            }
        }
    
    }
  • 相关阅读:
    Vue3使用video插件
    Syntax Error: Error: PostCSS received undefined instead of CSS string
    基于Frida的脱壳工具
    java byte[]与十六进制字符串相互转换
    Linux 安裝mitmproxy抓包基础教程
    Windows 安装mitmproxy 抓包基础教程
    python之get/post请求指定URL返回的网页内容,出现gzip乱码解决
    一张图说明java层与so层分析技巧
    app动态调试so层环境搭建
    frida hook基本操作命令
  • 原文地址:https://www.cnblogs.com/ITtangtang/p/2478061.html
Copyright © 2011-2022 走看看