当前位置:  编程技术>java/j2ee

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

    来源: 互联网  发布时间:2014-10-25

    本文导语:  正则表达式是一种专门用于对字符串的操作的规则。 1.在String类中就有一些方法是对字符串进行匹配,切割。 判断字符串是否与给出的正则表达式匹配的:boolean matches( String regex); 按照给定的正则表达式对字符串进行切割的:S...

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

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


 }
}


    
 
 

您可能感兴趣的文章:

  • Java网页爬虫 JSpider
  • Java多线程Web爬虫 Crawler4j
  • JAVA爬虫 WebCollector
  • Java网络蜘蛛/网络爬虫 Spiderman
  • java使用正则表达校验手机号码示例(手机号码正则)
  • java 正则表达式基础,实例学习资料收集大全 原创
  • Java正则表达式 reb4j
  • JAVA的类库中是否有正则表达式这样的东东?
  • java正则表达式验证函数
  • java使用正则表达为数字添加千位符的简单方法
  • 一个简单的问题,java中的正则函数是哪个?
  • java正则表达式获取url的host示例
  • 用Java正则去掉字符串中重复出现的字符
  • java去掉html标签 必须首先去掉双引号的正则
  • java正则表达式提取数字的方法实例
  • java正则表达式验证邮箱、电话号码示例
  • java正则表达式使用示例
  • java正则表达式应用的实例代码
  • java中的正则操作方法总结
  • 基于java中正则操作的方法总结
  • java中 利用正则表达式提取( )内内容
  • 利用Java正则表达式校验邮箱与手机号
  • java正则表达式表单验证类工具类(验证邮箱、手机号码、qq号码等)
  • java正则表达式解析html示例分享
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Java表达式引擎 Aviator
  • Java表达式语言 JUEL
  • Java表达式语法解析库 parboiled
  • Java表达式解析器 JExel
  • Java算术表达式计算类库 ExpressionJ
  • java 公式解析 表达式解析 expression-analyzer
  • Java的表达式计算引擎 Expr4J
  • 在JAVA中如何用正侧表达式
  • Java8新特性之Lambda表达式浅析
  • java正则表达式匹配网页所有网址和链接文字的示例
  • java表达式计算 QLExpress
  • Java/Js下使用正则表达式匹配嵌套Html标签
  • Java8新特性lambda表达式有什么用(用法实例)
  • Java 正则表达式功能及应用
  • Java 正则表达式 解释说明
  • 收集的一些常用java正则表达式
  • Java中如何计算表达式
  • Java的正则表达式深入分析
  • Java Lambda表达式详解和实例
  • Java函数式编程(一):你好,Lambda表达式
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3