首页 > 编程 > Regex > 正文

Java正则表达式使用

2020-03-16 21:04:27
字体:
来源:转载
供稿:网友
本篇文章主要给大家介绍java在正则表达式的使用,本篇文章给大家主要介绍应用点在抓取网页中的email地址和代码统计,感兴趣的朋友一起看看吧
 

一:抓取网页中的Email地址

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

 

复制代码代码如下:

[//w[.-]]+@[//w[.-]]+//.[//w]+

 

将网页内容分割提取
 

  1. import java.io.BufferedReader; 
  2. import java.io.FileNotFoundException; 
  3. import java.io.FileReader; 
  4. import java.io.IOException; 
  5. import java.util.regex.Matcher; 
  6. import java.util.regex.Pattern; 
  7. public class EmailSpider { 
  8.   public static void main(String[] args) { 
  9.     try { 
  10.       BufferedReader br = new BufferedReader(new FileReader("C://emailSpider.html")); 
  11.       String line = ""
  12.       while((line=br.readLine()) != null) { 
  13.         parse(line); 
  14.       } 
  15.     } catch (FileNotFoundException e) { 
  16.       e.printStackTrace(); 
  17.     } catch (IOException e) { 
  18.       e.printStackTrace(); 
  19.     } 
  20.   } 
  21.   private static void parse(String line) { 
  22.     Pattern p = Pattern.compile("[//w[.-]]+@[//w[.-]]+//.[//w]+"); 
  23.     Matcher m = p.matcher(line); 
  24.     while(m.find()) { 
  25.       System.out.println(m.group()); 
  26.     } 
  27.   } 
?

打印结果:

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的知识,你可以群发垃圾邮件了,呵呵!!!

二:代码统计
 

  1. import java.io.BufferedReader; 
  2. import java.io.File; 
  3. import java.io.FileNotFoundException; 
  4. import java.io.FileReader; 
  5. import java.io.IOException; 
  6. public class CodeCounter { 
  7.   static long normalLines = 0;//正常代码行 
  8.   static long commentLines = 0;//注释行 
  9.   static long whiteLines = 0;//空白行 
  10.   public static void main(String[] args) { 
  11.     //找到某个文件夹,该文件夹下面在没有文件夹,这里没有写递归处理不在同一文件夹的文件 
  12.     File f = new File("E://Workspaces//eclipse//Application//JavaMailTest//src//com//java//mail"); 
  13.     File[] codeFiles = f.listFiles(); 
  14.     for(File child : codeFiles){ 
  15.       //只统计java文件 
  16.       if(child.getName().matches(".*//.java$")) { 
  17.         parse(child); 
  18.       } 
  19.     } 
  20.     System.out.println("normalLines:" + normalLines); 
  21.     System.out.println("commentLines:" + commentLines); 
  22.     System.out.println("whiteLines:" + whiteLines); 
  23.   } 
  24.   private static void parse(File f) { 
  25.     BufferedReader br = null
  26.     //表示是否为注释开始 
  27.     boolean comment = false
  28.     try { 
  29.       br = new BufferedReader(new FileReader(f)); 
  30.       String line = ""
  31.       while((line = br.readLine()) != null) { 
  32.         //去掉注释符/*前面可能出现的空白 
  33.         line = line.trim(); 
  34.         //空行 因为readLine()将字符串取出来时,已经去掉了换行符/n 
  35.         //所以不是"^[//s&&[^//n]]*//n$" 
  36.         if(line.matches("^[//s&&[^//n]]*$")) { 
  37.           whiteLines ++; 
  38.         } else if (line.startsWith("/*") && !line.endsWith("*/")) { 
  39.           //统计多行/*****/ 
  40.           commentLines ++; 
  41.           comment = true;   
  42.         } else if (line.startsWith("/*") && line.endsWith("*/")) { 
  43.           //统计一行/**/ 
  44.           commentLines ++; 
  45.         } else if (true == comment) { 
  46.           //统计*/ 
  47.           commentLines ++; 
  48.           if(line.endsWith("*/")) { 
  49.             comment = false
  50.           } 
  51.         } else if (line.startsWith("//")) { 
  52.           commentLines ++; 
  53.         } else { 
  54.           normalLines ++; 
  55.         } 
  56.       } 
  57.     } catch (FileNotFoundException e) { 
  58.       e.printStackTrace(); 
  59.     } catch (IOException e) { 
  60.       e.printStackTrace(); 
  61.     } finally { 
  62.       if(br != null) { 
  63.         try { 
  64.           br.close(); 
  65.           br = null
  66.         } catch (IOException e) { 
  67.           e.printStackTrace(); 
  68.         } 
  69.       } 
  70.     } 
  71.   } 
?

以上内容就是本文给大家分享的Java在正则表达式的使用,希望大家喜欢。


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