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

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

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();
   }
  }

}
}

(0)

相关推荐

  • java 爬虫详解及简单实例

    Java爬虫 一.代码 爬虫的实质就是打开网页源代码进行匹配查找,然后获取查找到的结果. 打开网页: URL url = new URL(http://www.cnblogs.com/Renyi-Fan/p/6896901.html); 读取网页内容: BufferedReader bufr = new BufferedReader(new InputStreamReader(url.openStream())); 正则表达式进行匹配: tring mail_regex = "\\w+@\\w+

  • java实现网页爬虫的示例讲解

    这一篇目的就是在于网页爬虫的实现,对数据的获取,以便分析. 目录: 1.爬虫原理 2.本地文件数据提取及分析 3.单网页数据的读取 4.运用正则表达式完成超连接的连接匹配和提取 5.广度优先遍历,多网页的数据爬取 6.多线程的网页爬取 7.总结 爬虫实现原理 网络爬虫基本技术处理 网络爬虫是数据采集的一种方法,实际项目开发中,通过爬虫做数据采集一般只有以下几种情况: 1) 搜索引擎 2) 竞品调研 3) 舆情监控 4) 市场分析 网络爬虫的整体执行流程: 1) 确定一个(多个)种子网页 2) 进

  • Java爬虫 信息抓取的实现

    今天公司有个需求,需要做一些指定网站查询后的数据的抓取,于是花了点时间写了个demo供演示使用. 思想很简单:就是通过Java访问的链接,然后拿到html字符串,然后就是解析链接等需要的数据.技术上使用Jsoup方便页面的解析,当然Jsoup很方便,也很简单,一行代码就能知道怎么用了: Document doc = Jsoup.connect("http://www.oschina.net/") .data("query", "Java") //

  • Java爬虫实战抓取一个网站上的全部链接

    前言:写这篇文章之前,主要是我看了几篇类似的爬虫写法,有的是用的队列来写,感觉不是很直观,还有的只有一个请求然后进行页面解析,根本就没有自动爬起来这也叫爬虫?因此我结合自己的思路写了一下简单的爬虫. 一 算法简介 程序在思路上采用了广度优先算法,对未遍历过的链接逐次发起GET请求,然后对返回来的页面用正则表达式进行解析,取出其中未被发现的新链接,加入集合中,待下一次循环时遍历. 具体实现上使用了Map<String, Boolean>,键值对分别是链接和是否被遍历标志.程序中使用了两个Map集

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

    正则表达式是一种专门用于对字符串的操作的规则. 1.在String类中就有一些方法是对字符串进行匹配,切割. 判断字符串是否与给出的正则表达式匹配的:boolean matches( String regex); 按照给定的正则表达式对字符串进行切割的:String[]    split(String regex); 将符合正则表达式的字符串替换成我们想要的其他字符串:String  replaceAll(String  regex,String replacement) 2.下面介绍一下正则表

  • 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.rege

  • java实现简单注册选择所在城市

    本文实例为大家分享了java实现简单注册选择所在城市的全部代码,供大家参考,具体内容如下 1.activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.androi

  • 基于C#实现网页爬虫

    本文实例为大家分享了基于C#实现网页爬虫的详细代码,供大家参考,具体内容如下 HTTP请求工具类: 功能: 1.获取网页html 2.下载网络图片 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Form

  • java编写简单的E-mail发送端程序

    本文实例介绍了简单E-mail发送端程序的Java实现代码,分享给大家供大家参考,具体内容如下 在这个代码中,有几个注意点强调一下: 1.使用 Socket 与 SMTP 邮件服务器取得连接,注意 SMTP 服务器的主机名: 2.使用 data 命令时,若写了 subject (主题)之后,邮件的正文部分必须与 subject 之间有一个空行,即"回车+换行",在代码中则是 \r\n : 3.同样需要将发件人的邮箱用户名.密码进行 BASE64 编码之后再传给 SMTP 服务器: 4.

  • java实现简单图片上传下载功能

    本文实例为大家分享了java实现简单图片上传下载的具体代码,供大家参考,具体内容如下 1.首先在上传图片界面:将form表单的enctype改为:multipart/form-data 2.定义一个实体类用来将存放图片存放的路径存入到mysql中private String imgpath; 3.在spring容器中注入处理图片的解析器 <bean name="multipartResolver" class="org.springframework.web.multi

  • Java正则表达式验证固定电话号码符合性

    下面给大家介绍Java正则表达式验证固定电话号码符合性,具体代码如下所示: /** * 验证固定电话号码的合法性 * @author jy */ package phone; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PhoneTest { public static boolean isPhone(String str) { Pattern p1 = null, p2 = null;

  • Java实现简单版贪吃蛇游戏

    本文实例为大家分享了Java实现简单版贪吃蛇游戏的具体代码,供大家参考,具体内容如下 这是一个比较简洁的小游戏,主要有三个类,一个主类,一个食物类,一个贪吃蛇类. 1.首先定义主类,主类中主要用来创建窗口 public class Main { public static final int WIDTH=600; public static final int HEIGHT=600; public static void main(String[] args) { JFrame win =new

  • java实现简单五子棋小游戏(2)

    本文实例为大家分享了java实现简单五子棋小游戏游戏的具体代码,供大家参考,具体内容如下 讲解 在第一步实现的基础上,添加游戏结束条件.五子棋游戏中的相同棋子如果同时有五个连接成一条线就说明游戏结束. 代码实现如下: if(count!=0){                 //判断每一行                 for(int j=0;j<11;j++){                     for(int i=0;i<7;i++){                      

  • java实现简单的汽车租赁系统

    本文实例为大家分享了java实现简单的汽车租赁系统的具体代码,供大家参考,具体内容如下 欢迎进入xx汽车租赁公司请输入用户名请输入密码(用户名默认是名字缩写,密码是123,将登陆模块封装到方法中去调用方法)请输入您的操作1)查看现在车库中的所有车辆信息2)租赁汽车3)往车库中添加汽车4)修改汽车租赁价格信息 用switch去判断操作 类分析 代码: package com.youjiuye.bms; public class CRMS {     public static void main(

随机推荐