千家信息网

Java正则表达式的使用实例

发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,这篇文章主要讲解了"Java正则表达式的使用实例",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java正则表达式的使用实例"吧!一:抓取网页中的Ema
千家信息网最后更新 2024年11月28日Java正则表达式的使用实例

这篇文章主要讲解了"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();        }      }    }  }}

感谢各位的阅读,以上就是"Java正则表达式的使用实例"的内容了,经过本文的学习后,相信大家对Java正则表达式的使用实例这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0