正则表达式应用(重点:爬虫)

本文介绍了正则表达式的使用方法及实践案例,包括治疗口吃现象的文字处理、IP地址的排序与验证、电子邮件地址的验证,并通过爬虫技术抓取网页上的电子邮件地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式应用(重点:爬虫)

正则学习步骤:

1、正则表达式的规则与方法介绍

2、正则常见方法演示

3、正则表达式应用(重点:爬虫)

 

package regex.test;

 

import java.util.TreeSet;

 

publicclass RegexTest {

 

       public    static    voidmain(String[] args) {

              /*需求:

               * 1、治疗口吃:我我我..我我我..我要.....要要..要..要学学学...学学..学编...编编编编...编编....编程...程程程程程程

               * 2、对IP地址排序。

               * 3、对邮件地址校验。

               *

               */

              test_3();

       }

 

       public  static    void test_3() {

              /*

               *3、对邮箱地址校验。

               *

               */

              String mail="abc2@sina.com";

              String regex="[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-z] {1,3})";

//            regex="\\w+@\\w+(\\.\\w+)+";

              boolean    b=mail.matches(regex);//1@1.1

              System.out.println(mail+":"+b);

             

             

       }

 

       public  static    void test_2() {

              /*

               * 2ip地址排序。

               * 192.168.25.1 127.0.0.1   1.1.1.1  105.12.0.1

               */

      

             

              String ip_str="192.168.25.1 127.0.0.1   1.1.1.1  105.12.0.1";

              //1、为了让ip可以按照字符串循序比较,只要让ip的每一段循序相同。

              //所以,补零,按照每一位所需做多零补充。每一段都加两个0

              ip_str=ip_str.replaceAll("(\\d+)", "00$1");

              System.out.println(ip_str);

              //然后每一段保留数字3位。

              ip_str=ip_str.replaceAll("0*(\\d{3})", "$1");

              System.out.println(ip_str);

             

              //2、切出IP地址。

              String[] ips=ip_str.split(" +");

              TreeSet<String> ts=newTreeSet<String>();//TreeSet集合元素会自动按字符串大小进行排序。

              for(Stringip:ips) {

//            System.out.println(ip);

                     ts.add(ip);

              }

              for(Stringip:ts) {

                     //3、删除多余的0

                     System.out.println(ip.replaceAll("0*(\\d+)", "$1"));

              }

             

             

       }

 

       public  static    void test_1() {

              /*

               * 1、治疗口吃。

               *

               */

              String str="我我我..我我我..我要.....要要..要..要学学学...学学..学编...编编编编...编编....编程...程程程程程程";

              //将字符串中的.去掉。用替换。

              str=str.replaceAll("\\.+", "");

              System.out.println(str);

              //替换叠词。

              str=str.replaceAll("(.)\\1+", "$1");

              System.out.println(str);

       }

 

}

 

网页爬虫

package regex.test;

 

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.URL;

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

 

/*

 * 网页爬虫:其实就是一个程序用于在互联网中获取指定规则的数据。

 *

 * 爬取邮箱地址。

 * 步骤:

 *           1、读取源文件。

 *           2、对读取的数据进行规则的匹配。从中获取符合规则的数据。

 *           3、将符合规则的数据存储到集合中。

 */

publicclass RegexTest2 {

 

       publicstatic    void    main(String[] args) throws IOException {

              List<String>list=getMailsByWeb();

              for(Stringmail:list) {

                     System.out.println(mail);

              }

       }

       public  static List<String> getMailsByWeb() throwsIOException {

              //1、读取源文件。

//                          BufferedReader bufr=newBufferedReader(new FileReader("E:\\mail.html"));

              URL url=new URL("https://hao.360.cn/?src=lm&ls=n24acbb3e9d");

                            BufferedReaderbufIn=new BufferedReader(newInputStreamReader(url.openStream()));

                            //2、对读取的数据进行规则的匹配。从中获取符合规则的数据。

//                          Stringmail_regex="\\w+\\w+(\\.\\w+)+";

                            String mail_regex="http://\\w+(\\.\\w+)+";

                            List<String>list=new ArrayList<String>();

                            Patternp=Pattern.compile(mail_regex);

                            String line=null;

                            while((line=bufIn.readLine())!=null) {

                                   //3、将符合规则的数据存储到集合中。

                                   Matcherm=p.matcher(line);

                                   while(m.find()){

                                          list.add(m.group());

                                          }

                            }

                            return list;

             

       }

       public    static    List<String> getMails() throws IOException{

              //1、读取源文件。

              BufferedReader bufr=newBufferedReader(new FileReader("E:\\mail.html"));

              //2、对读取的数据进行规则的匹配。从中获取符合规则的数据。

              String mail_regex="\\w+@\\w+(\\.\\w+)+";

              List<String> list=newArrayList<String>();

              Patternp=Pattern.compile(mail_regex);

              String line=null;

              while((line=bufr.readLine())!=null) {

                     //3、将符合规则的数据存储到集合中。

                     Matcher m=p.matcher(line);

                     while(m.find()){

                     list.add(m.group());

                     }

              }

              return list;

       }

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值