今日内容

教学目标

正则表达式

1.1 正则表达式的概念及演示

我们接下来就重点学习怎样写正则表达式

1.2 正则表达式-字符类

  1. [abc]:代表a或者b,或者c字符中的一个。
  2. [^abc]:代表除a,b,c以外的任何字符。
  3. [a-z]:代表a-z的所有小写字符中的一个。
  4. [A-Z]:代表A-Z的所有大写字符中的一个。
  5. [0-9]:代表0-9之间的某一个数字字符。
  6. [a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符。
  7. [a-dm-p]:a 到 d 或 m 到 p之间的任意一个字符。

1.3 正则表达式-逻辑运算符

 

1.4 正则表达式-预定义字符

1.5 正则表达式-数量词

1.6 正则表达式练习1

需求:

请编写正则表达式验证用户输入的手机号码是否满足要求。

请编写正则表达式验证用户输入的邮箱号是否满足要求。

请编写正则表达式验证用户输入的电话号码是否满足要求。

验证手机号码 13112345678 13712345667 13945679027 139456790271

验证座机电话号码 020-2324242 02122442 027-42424 0712-3242434

验证邮箱号码 3232323@qq.com zhangsan@itcast.cnn dlei0009@163.com dlei0009@pci.com.cn

代码示例:

1.7 正则表达式练习2

需求 请编写正则表达式验证用户名是否满足要求。要求:大小写字母,数字,下划线一共4-16位 请编写正则表达式验证身份证号码是否满足要求。 简单要求: 18位,前17位任意数字,最后一位可以是数字可以是大写或小写的x 复杂要求: 按照身份证号码的格式严格要求。

身份证号码: 41080119930228457x 510801197609022309 15040119810705387X 130133197204039024 430102197606046442

代码示例:

1.8 本地数据爬取

Pattern:表示正则表达式 Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取。 在大串中去找符合匹配规则的子串。

代码示例:

1.9 网络数据爬取(了解)

需求:

把连接:https://m.sengzan.com/jiaoyu/29104.html?ivk sa=1025883i中所有的身份证号码都爬取出来。

代码示例:

1.10 爬取数据练习

需求:

把下面文本中的座机电话,邮箱,手机号,热线都爬取出来。

来黑马程序员学习Java,手机号:18512516758,18512508907或者联系邮箱:boniu@itcast.cn,座机电话:01036517895,010-98951256邮箱:bozai@itcast.cn,热线电话:400-618-9090 ,400-618-4000,4006184000,4006189090手机号的正则表达式:1[3-9]\d{9}

代码示例:

1.11 按要求爬取

需求:

有如下文本,按要求爬取数据。

Java自从95年问世以来,经历了很多版本,目前企业中用的最多的是Java8和Java11,因为这两个是长期支持版本,下一个长期支持版本是Java17,相信在未来不久Java17也会逐渐登上历史舞台。

需求1:

爬取版本号为8,11.17的Java文本,但是只要Java,不显示版本号。

需求2:

爬取版本号为8,11,17的Java文本。正确爬取结果为:Java8 Java11 Java17 Java17

需求3:

爬取除了版本号为8,11,17的Java文本。 代码示例:

1.12 贪婪爬取和非贪婪爬取

代码示例:

1.13 String的split方法中使用正则表达式

1.14 String类的replaceAll方法中使用正则表达式

1.15 正则表达式-分组括号( )

细节:如何识别组号?

只看左括号,不看有括号,按照左括号的顺序,从左往右,依次为第一组,第二组,第三组等等

1.16 分组练习

需求:

将字符串:我要学学编编编编程程程程程程。

替换为:我要学编程

1.17 忽略大小写的写法

1.18 非捕获分组

非捕获分组:分组之后不需要再用本组数据,仅仅是把数据括起来。

1.19 正则表达式练习