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在正则表达式的使用,希望大家喜欢。