广

Java编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-11-14 08:49:26 次阅读 稿源:互联网
    零七广告

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

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

     }
    }

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告