热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

正则表达式(2)——应用(匹配、切割、替换、查找)、模拟网络爬虫

一、正则表达式主要是用于操作字符串的规则,正则表达式对字符串的操作主要有一下几种应用:1、匹配:matches(Stringregex);

一、正则表达式主要是用于操作字符串的规则,正则表达式对字符串的操作主要有一下几种应用:
1、匹配:matches(String regex);
2、切割:split(String regex);
3、替换:replaceAll(String regex, String replacement);
4、查找:

二、匹配:
需求1:编写一个正则表达式匹配手机号(要求:第一位只能是1开头,第二位3、4、5、7、8,全是数字,长度11位)

public static void matchesPhone(String phone){String reg = "1[34578]\\d{9}";System.out.println(phone.matches(reg)?"手机号可以使用!":"手机号非法!");
}

需求2:匹配固定电话:区号-主机号(要求:区号:首位是0,长度:3~4。主机号:首位不能是0,长度:7~8)

public static void matchesTel(String tel){String reg = "0\\d{2,3}-[1-9]\\d{6,7}";System.out.println(tel.matches(reg)?"固话可以使用!":"固话非法!");
}

三、切割:

分组概念解析:

四、替换:

五、查找:
1、引入:
介绍查找之前我们先引入这样第一个概念——单词边界匹配器,\b,单词边界匹配器只是代表了单词开始或者结束部分,不匹配任何的字符。

2、查找:
指定为字符串的正则表达式,必须首先被编译为此类的实例。然后,可将得到的正则对象匹配任意的字符串用于创建Matcher对象,执行匹配所涉及的所有状态都驻留在匹配器中,所以多个匹配器可以共享同一模式。
1)因此典型的调用顺序是:
Pattern p = Pattern.compile(“正则”);
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();
2)查找需要使用的对象:
Pattern(正则表达式)、Matcher(匹配器对象)
3)匹配器要使用到的方法:
find() 通知匹配器去匹配字符串,查找符合规则的字符串。如果能查到符合规则的字符串,则返回true,否则返回false。
group() 获取符合规则的子串。

4)注意:使用group()方法的时候,一定要先调用find()方法让匹配器去查找符合规则的字符串,否则报错。

六、应用——模拟网络爬虫
1、需求:模拟网络爬虫(网络蜘蛛),获取所要格式的邮箱(邮箱后缀:.com .cn .com.cn .net)

2、代码实现:

public class Demo8 {public static void main(String[] args) {String content = "如有需求请联系5858585@qq.cn如有需求请联系654321@qq.com.cn如有需求请联系123456@qq.com"+"如有需求请联系654321@qq.com.cn如有需求请联系666666@qq.net";String reg = "[a-zA-Z1-9]\\w{5,17}@[a-zA-Z0-9]{2,}(\\.(com|cn|net)){1,2}";//把字符串的正则编译成正则对象Pattern p = Pattern.compile(reg);//使用正则对象产生匹配器对象Matcher m = p.matcher(content);while(m.find()){System.out.println(m.group());} }
}


推荐阅读
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了在Java中gt、gtgt、gtgtgt和lt之间的区别。通过解释符号的含义和使用例子,帮助读者理解这些符号在二进制表示和移位操作中的作用。同时,文章还提到了负数的补码表示和移位操作的限制。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java值传递机制的说明及示例代码
    本文对Java值传递机制进行了详细说明,包括形参和实参的定义和传递方式,以及通过示例代码展示了交换值的方法。 ... [详细]
  • 本文详细介绍了Python中正则表达式和re模块的使用方法。首先解释了转义符的作用,以及如何在字符串中包含特殊字符。然后介绍了re模块的功能和常用方法。通过学习本文,读者可以掌握正则表达式的基本概念和使用技巧,进一步提高Python编程能力。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
author-avatar
手机用户2702935897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有