Welcome

首页 / 正则表达式 / 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()将字符串取出来时,已经去掉了换行符
//所以不是"^[\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在正则表达式的使用,希望大家喜欢。