欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java正则表达式简单应用

程序员文章站 2024-03-08 15:11:04
一:抓取网页中的email地址 利用正则表达式匹配网页中的文本 [\\w[.-]]+@[\\w[.-]]+\\.[\\w]+ 将网页内容分割提取 impor...

一:抓取网页中的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());
    }
  }

}

打印结果:

260678675@qq.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正则表达式有所帮助。