首页 > 编程 > regex > 正文

Java正则表达式使用

2020-01-20 22:10:03
字体:
来源:转载
供稿:网友

一:抓取网页中的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在正则表达式的使用,希望大家喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表