java正则表达式简单应用
一:抓取网页中的Email地址
利用正则表达式匹配网页中的文本
[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+
将网页内容分割提取
importjava.io.BufferedReader; importjava.io.FileNotFoundException; importjava.io.FileReader; importjava.io.IOException; importjava.util.regex.Matcher; importjava.util.regex.Pattern; publicclassEmailSpider{ publicstaticvoidmain(String[]args){ try{ BufferedReaderbr=newBufferedReader(newFileReader("C:\\emailSpider.html")); Stringline=""; while((line=br.readLine())!=null){ parse(line); } }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } privatestaticvoidparse(Stringline){ Patternp=Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+"); Matcherm=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的知识,你可以群发垃圾邮件了,呵呵!!!
二:代码统计
importjava.io.BufferedReader; importjava.io.File; importjava.io.FileNotFoundException; importjava.io.FileReader; importjava.io.IOException; publicclassCodeCounter{ staticlongnormalLines=0;//正常代码行 staticlongcommentLines=0;//注释行 staticlongwhiteLines=0;//空白行 publicstaticvoidmain(String[]args){ //找到某个文件夹,该文件夹下面在没有文件夹,这里没有写递归处理不在同一文件夹的文件 Filef=newFile("E:\\Workspaces\\eclipse\\Application\\JavaMailTest\\src\\com\\java\\mail"); File[]codeFiles=f.listFiles(); for(Filechild:codeFiles){ //只统计java文件 if(child.getName().matches(".*\\.java$")){ parse(child); } } System.out.println("normalLines:"+normalLines); System.out.println("commentLines:"+commentLines); System.out.println("whiteLines:"+whiteLines); } privatestaticvoidparse(Filef){ BufferedReaderbr=null; //表示是否为注释开始 booleancomment=false; try{ br=newBufferedReader(newFileReader(f)); Stringline=""; while((line=br.readLine())!=null){ //去掉注释符/*前面可能出现的空白 line=line.trim(); //空行因为readLine()将字符串取出来时,已经去掉了换行符\n //所以不是"^[\\s&&[^\\n]]*\\n$" if(line.matches("^[\\s&&[^\\n]]*$")){ whiteLines++; }elseif(line.startsWith("/*")&&!line.endsWith("*/")){ //统计多行/*****/ commentLines++; comment=true; }elseif(line.startsWith("/*")&&line.endsWith("*/")){ //统计一行/**/ commentLines++; }elseif(true==comment){ //统计*/ commentLines++; if(line.endsWith("*/")){ comment=false; } }elseif(line.startsWith("//")){ commentLines++; }else{ normalLines++; } } }catch(FileNotFoundExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }finally{ if(br!=null){ try{ br.close(); br=null; }catch(IOExceptione){ e.printStackTrace(); } } } } }
以上就是针对java正则表达式的简单应用,希望对大家的学习Java正则表达式有所帮助。