(二十)正则表达式

news/2025/2/21 4:39:54/

目录

前言:

1.概述:

2.正则表达式体验:

3.正则表达式字符

4.正则表达式在字符串方法中的使用

5.代码演示:

6.正则表达式支持爬取信息

7.代码演示:


前言:

        正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。

        许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开来的,后来在广泛运用于Scala 、PHP、C# 、Java、C++ 、Objective-c、Perl 、Swift、VBScript 、Javascript、Ruby 以及Python等等。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

1.概述:

        正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。

2.正则表达式体验:

需求:

        加入现在要求校验一个QQ号码是否正确,6位及20位之内,必须全部是数字。

/**正则表达式(regex)  :可以用一些规定的字符来制定规则,并用来经检验数据格式的合法性**/
public class regex_Demo1 {public static void main(String[] args) {//校验QQ号,必须全部是数字6-20位System.out.println(checkQQ("251410401102"));System.out.println(checkQQ("12841"));System.out.println(checkQQ("13929jfuhfuc"));System.out.println(checkQQ(null));System.out.println("==============================");System.out.println(checkQQ2("251410401102"));System.out.println(checkQQ2("12841"));System.out.println(checkQQ2("13929jfuhfuc"));System.out.println(checkQQ2(null));}public static boolean checkQQ2(String qq){//正则表达式return qq != null && qq.matches("\\d{6,20}");//只能是数字}public static boolean checkQQ(String qq) {//1、判断QQ号的长度是否满足要求if (qq == null || qq.length()<6||qq.length()>20) {return false;}//2、判断是否全部是数字,不是则返回falsefor (int i = 0; i <qq.length() ; i++) {char ch = qq.charAt(i);//判断这个字符是否不是数字,不是数字直接返回falseif (ch<'0'||ch>'9'){return false;}}return false;}
}

3.正则表达式字符

3.1字符类(默认匹配一个字符)

 

3.2预定义的字符类(默认匹配一个字符)

 

3.3贪婪的量词(配合匹配多个字符)

 

3.4字符串对象提供了匹配正则表达式规则的API

 

 

4.正则表达式在字符串方法中的使用

 

5.代码演示:

public class regex_Demo2 {public static void main(String[] args) {//1.分割String name = "小路dhfadk蓉儿llvok武则天";String[] arrs =name.split("\\w+");for (int i = 0; i < arrs.length; i++) {System.out.println(args[i]);}
​String arrs2 = name.replaceAll("\\w+","  ");System.out.println(arrs2);}
}

6.正则表达式支持爬取信息

7.代码演示:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
​
//正则表达式爬取信息
public class regex_Demo3 {public static void main(String[] args) {
​//定义内容String rs = "黑马程序员JAVA,电话:020-123938,邮箱:2683857059@qq.com,黑马程序员python,电话:18765832633,020100323 邮箱:1189231782@qq.com"+"黑马程序员CSS,电话:400-100-3233,邮箱:39184185@.qq.com";//定义爬取规则String regex="(\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2})| (1[3-9]\\d{9})" +"|(0\\d{2,6}-?\\d{5,20})|(400-?\\d{3,9}-?\\d{3,9})";//爬取邮箱和手机号//1、编译正则表达式成为一个匹配规则对象Pattern pattern = Pattern.compile(regex);//2、通过匹配规则得到一个匹配数据内容的匹配器对象Matcher matcher = pattern.matcher(rs);//3、通过匹配器去内容中爬取信息while(matcher.find()){System.out.println(matcher.group());}}
}

http://www.ppmy.cn/news/12040.html

相关文章

2023版大数据学习路线图(适合自学)

随着信息产业的迅猛发展&#xff0c;大数据应用逐渐落地&#xff0c;行业人才需求量逐年扩大。大数据成为目前最具前景的高薪行业之一&#xff0c;大数据分析工程师、大数据开发工程师等大数据人才也成为市场紧缺型人才&#xff0c;薪资一涨再涨。很多人想要加入到大数据开发行…

基于Python实现种差值方法(完整代码详细教程)

三种插值方法都是使用Python自己实现的。1.1 最近邻插值寻找每个中心点周围的八个点中有无未丢失的点&#xff0c;如果有的话就赋值为第一个找到的点&#xff0c;如果没有就扩大范围再次寻找&#xff0c;在最大范围内都找不到的话就跳过。1.2 双线性插值使用解方程的方法求解&a…

代码随想录第60天|84.柱状图中最大的矩形

84.柱状图中的最大的图形 总体思路&#xff1a;找到左右两个方向第一个小于该柱子高度的下标&#xff0c;用右下标-左下标-1得到该柱子高度对应的宽度w,再用宽度w*高度h得到面积&#xff0c;返回面积最大值 双指针法&#xff08;超时&#xff09; for循环判断左右第一个小于…

模板技术详解

目录 一、概念介绍 二、函数模板 2.1 概念 2.2 函数模板格式 2.3 函数模板原理 2.4 函数模板实例化 2.5 函数模板的匹配原则 三、类模板 3.1 类模板格式 3.2 类模板实例化 四、非类型模板参数 五、模板特化 5.1 概念 5.2 函数模板特化 5.3 类模板特化 六、模板…

好雨科技加入龙蜥 完成与 Anolis OS 兼容适配

近日&#xff0c;北京好雨科技有限公司&#xff08;以下简称“好雨科技”&#xff09;签署了 CLA&#xff08;Contributor License Agreement&#xff0c;贡献者许可协议&#xff09; &#xff0c;正式加入龙蜥社区&#xff08;OpenAnolis&#xff09;。好雨科技成立于 2015 年…

Effective C++条款38:通过复合塑模出 has-a 或“根据某物实现出“

Effective C条款38&#xff1a;通过复合塑模出 has-a 或"根据某物实现出"&#xff08;Model "has-a" or "is-implemented-in-terms-of" through composition&#xff09;条款38&#xff1a;通过复合塑模出 has-a 或"根据某物实现出"1、…

【自学Docker】Docker HelloWorld

Docker HelloWorld Docker服务 查看Docker服务状态 使用 systemctl status docker 命令查看 Docker 服务的状态。 haicoder(www.haicoder.net)# systemctl status docker我们使用 systemctl status docker 命令查看 Docker 服务的状态&#xff0c;显示结果如下图所示&#…

Kotlin中的Lambda编程

文章目录1.集合的创建与遍历2.集合的函数式API3.Java函数式API的使用1.集合的创建与遍历 传统意义上的集合主要是List和Set&#xff0c;再广泛一点的话&#xff0c;像Map这样的键值对数据结构也可以包含进来。List&#xff0c;Set和Map再Java中都是接口&#xff0c;List主要的…