java正则表达式简单使用和网页爬虫的制作代码

所属分类: 软件编程 / java 阅读数: 68
收藏 0 赞 0 分享

正则表达式是一种专门用于对字符串的操作的规则。

1.在String类中就有一些方法是对字符串进行匹配,切割。

判断字符串是否与给出的正则表达式匹配的:boolean matches( String regex);

按照给定的正则表达式对字符串进行切割的:String[]    split(String regex);

将符合正则表达式的字符串替换成我们想要的其他字符串:String  replaceAll(String  regex,String replacement)


2.下面介绍一下正则表达式常用的用法

(1)

复制代码 代码如下:

String regex="[1-9][0-9]{4,15}";
//[1-9]表示这个数字只能在1-9内选择
//[0-9]表示这个数字可以是0-9
//{4,15}表示其前面的这个格式的数字可以重复4-15次

这个正则表达式的意思 是:第一个数字应该是1-9中任意的一个,然后紧接着就必须要出现0-9中的数字中的一种,而且这种数字至少要出现4次,至多出现15次

如:

10175   符合 

10不符合,因为[0-9]{4,15},至少要出现4次以上,在这里只出现了一次

(2)

[a-zA-Z0-9_]{6}表示恰好要出现6次a-z或A-Z或_  中的字符

+表示至少出现一次

*表示出现0次或多次

?表示出现一次或0次


(3)根据正则表达式来切割字符串

复制代码 代码如下:

String str="sjd.ksdj.skdjf";

String regex="\\.";


注意:  . 在正则表达式中是表式一个任意的字符,是一个特殊的符号。我们想要用.来切割,就必须将其转换为普通字符 用\\即可。

因为\ 也是特殊符号,所以要两个\\来表示。当我们想要使用普通的 \ 时,那么就要用\\\\来表示才可。

String[] ss=str.split(regex); 返回字符串数组: "sjd"  "ksdj"  "skdjf"  实现 了对原有字符串的切割

(4)根据正则表达式来替换掉我们想要替换的东西

将字符串中所有连续出现5个或以上的数字串替换成#

复制代码 代码如下:

String str="abcd1334546lasjdfldsf2343424sdj";

String regex="[0-9]{5,}";

String   newstr=str.replaceAll(regex,"#");

(5)获取符合正则表达式规则的字符串

复制代码 代码如下:

Pattern p=Pattern.compile(String regex);

Matcher  m=p.matcher(String str);

while(m.find())

{

System.out.println(m.group());

}

3.网页爬虫的制作

我们制作 一个可以将一个网页中的全部的邮箱读取出,并且存放在一个文本文件中。

复制代码 代码如下:

/*
网页爬虫
即:从网页中获取符合正则表达式的字符串或内容

从网络中获取邮箱地址
*/
import java.io.*;
import java.util.regex.*;
import java.net.*;
class  MailTest
{
 public static void main(String[] args) throws Exception
 {
  getMailAddr();
 }

 public static void getMailAddr()throws Exception
 {
  URL url=new URL("http://bbs.jb51.net/topics/390148495");
  URLConnection con=url.openConnection();

  BufferedReader bufIn=new BufferedReader(new InputStreamReader(con.getInputStream()));
  BufferedWriter bufw=new BufferedWriter(new FileWriter(new File("e://mailaddress.txt")));
  String str=null;
  String regex="[a-zA-Z0-9_]{6,12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";

  Pattern p=Pattern.compile(regex);
  while((str=bufIn.readLine())!=null)
  {
   Matcher m=p.matcher(str);
   while(m.find())
   {
    String ss=m.group();
    bufw.write(ss,0,ss.length());
    bufw.newLine();
    bufw.flush();
   }
  }


 }
}

更多精彩内容其他人还在看

利用MultipartFile实现文件上传功能

这篇文章主要为大家详细介绍了利用MultipartFile实现文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java编程实现NBA赛事接口调用实例代码

这篇文章主要介绍了Java编程实现NBA赛事接口调用实例代码,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Java编程之双重循环打印图形

这篇文章主要介绍了Java编程之双重循环打印图形,属于Java编程基础练习部分,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

java基础学习JVM中GC的算法

这篇文章主要介绍了java基础学习JVM中GC的算法,通过图文加深对GC算法思路的理解。
收藏 0 赞 0 分享

Java编程Post数据请求和接收代码详解

这篇文章主要介绍了Java编程Post数据请求和接收代码详解,涉及enctype的三种编码,post与get等相关内容,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Retrofit+Rxjava实现文件上传和下载功能

这篇文章主要介绍了Retrofit+Rxjava实现文件上传和下载功能,文中提到了单文件上传和多文件上传及相关参数的请求,需要的朋友参考下吧
收藏 0 赞 0 分享

Retrofit+Rxjava下载文件进度的实现

这篇文章主要介绍了Retrofit+Rxjava下载文件进度的实现,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java检查服务器的连通两种方法代码分享

这篇文章主要介绍了java检查服务器的连通两种方法代码分享,涉及ping的介绍以及检查服务器连通的两种方法代码示例,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Java/Android 获取网络重定向文件的真实URL的示例代码

本篇文章主要介绍了Java/Android 获取网络重定向文件的真实URL的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java并发编程之同步器代码示例

这篇文章主要介绍了java并发编程之同步器代码示例,分享了相关代码,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享
查看更多