正则表达式——参考视频B站《奇乐编程学院》

智能指针

  • 一、背景
    • 🎈1.1. 模式匹配
    • 🎈1.2. 文本替换
    • 🎈1.3. 数据验证
    • 🎈1.4. 信息提取
    • 🎈1.5. 拆分字符串
    • 🎈1.6. 高级搜索功能
  • 二、原料
    • 2.1 参考视频
    • 2.2 验证网址
  • 三、用法
    • 3.1 限定符
      • 3.1.1 ?
      • 3.1.2 *
      • 3.1.3 +
      • 3.1.4 {}
      • 3.1.4 ()
    • 3.2 "或"运算符
    • 3.3 字符类
      • 3.3.1 []
      • 3.3.2 ^
    • 3.3 特殊字符
      • 3.3.1 一般特殊
      • 3.3.2 二般特殊
  • 四、高级用法
    • 4.1 贪婪与懒惰匹配
  • 五、实例
    • 5.1 匹配rgb颜色
    • 5.2 匹配IPV4
  • 六、总结
    • 6.1 评论区总结
    • 6.2 视频总结

一、背景

正则表达式是一个非常灵活且功能强大的工具,可用于各种文本处理和数据操作任务。无论是在编程中还是在日常文本编辑中,掌握正则表达式都能显著提高效率和准确性。正则表达式(Regular Expression,简称 regex or regexp) 是一种用于匹配和操作字符串的强大工具。它可以用于多种编程语言和工具中,广泛应用于文本处理、数据验证、信息提取等任务。以下是正则表达式的一些主要作用:

🎈1.1. 模式匹配

正则表达式可以帮助你查找特定模式的文本。例如,你可以找到所有以 “abc” 开头的字符串,或是匹配任何包含数字的字符串。

🎈1.2. 文本替换

你可以使用正则表达式在文本中进行替换操作。例如,可以将所有的邮箱地址替换为一个统一格式,或者移除特定模式的字符串。

🎈1.3. 数据验证

正则表达式常用于验证输入数据的格式,例如验证电子邮件地址、电话号码、日期格式等。这可以确保用户输入的内容符合预期格式。

🎈1.4. 信息提取

利用正则表达式可以从文本中提取特定的信息。例如,从日志文件中提取日期、事件代码或任何特定模式的信息。

🎈1.5. 拆分字符串

使用正则表达式可以根据特定模式拆分字符串,例如,将一段文本按空格、标点符号等分割开来。

🎈1.6. 高级搜索功能

在一些文本编辑器或 IDE 中,正则表达式提供了强大的搜索功能,允许用户使用复杂的模式来查找文本。

二、原料

2.1 参考视频

【10分钟快速掌握正则表达式】 https://www.bilibili.com/video/BV1da4y1p7iZ/?share_source=copy_web&vd_source=e52fceea42b773b494141fae690ef6c5

2.2 验证网址

https://regex101.com/

三、用法

万事俱备,我们直接切入正题

3.1 限定符

3.1.1 ?

测试实例:use a used variable name is illegal.
表达式: used?
意义表示: 字符d这个词出现0次或1次

在这里插入图片描述

3.1.2 *

测试实例:

ac
abc
abbbbbbc
adc
addddddc

表达式: ab*c
意义表示: 代表b可以没有也可以出现多次
在这里插入图片描述

3.1.3 +

测试实例:

ac
abc
abbbbbbc
adc
addddddc

表达式: ab+c
意义表示: 代表b可出现一次以上字符
在这里插入图片描述

3.1.4 {}

测试实例:

abc
abbc
abbbbbbbbbc
abbbbbbc
ac
adc
addddddc

表达式: ab{2}c
意义表示: 代表b可出现2次
在这里插入图片描述

表达式:

 ab{2,6}c

意义表示: 代表b可出现2次到6次字符
在这里插入图片描述
表达式:

ab{2,}c

意义表示: 代表b可出现2次以上
在这里插入图片描述

3.1.4 ()

前面我们涉及的都是一个字符,如果我们需要匹配两个字符,可以通过()括起来
表达式:

a(bb){1,3}c

意义表示: 代表bb可出现1次到3次字符
在这里插入图片描述

3.2 "或"运算符

测试实例:

a cat
a dog
a bird

表达式: a (cat|dog)
意义表示: 先匹配a (空格)然后后面要么是dog要么是cat
在这里插入图片描述

3.3 字符类

3.3.1 []

测试实例:`

abc
tiger
aabbcc
dog

表达式: [abc]+
意义表示: 匹配由字母abc构成的字母的单词,方括号里的内容代表要求匹配的字符只能取自于它们
在这里插入图片描述

3.3.2 ^

测试实例:

abc
tiger
aabbcc
dog
1234678
abc123456
ABCDEFG

表达式: [^1-9]+
意义表示: 匹配数字字符,匹配除了^号后面的字符的字符
在这里插入图片描述

3.3 特殊字符

3.3.1 一般特殊

\d :匹配任何数字,相当于 [0-9]\D :匹配任何非数字字符,相当于 [^0-9]\w :匹配任何单词字符(字母、数字或下划线),相当于 [a-zA-Z0-9_]\W :匹配任何非单词字符,相当于 [^a-zA-Z0-9_]\s :匹配任何空白字符(空格、制表符、换行符等)。
\S :匹配任何非空白字符。
.:表示任意字符,但是不包括换行符

3.3.2 二般特殊

^ :匹配输入字符串的开始位置。
例子:^abc 仅匹配以 abc 开头的字符串。

$ :匹配输入字符串的结束位置。
例子:abc$ 仅匹配以 abc 结尾的字符串

四、高级用法

4.1 贪婪与懒惰匹配

<span><b>This is a sample text</b></span>

表达式:<.+?>
意义: 它会将正则表达式中的默认的贪婪匹配切换为懒惰匹配
解析:

 <.+?>
<:

匹配字符 <,表示开始一个标签。
.:

匹配任意单个字符(除了换行符)。这意味着这个正则表达式会匹配标签内的任意字符。
+:

表示前面的字符(在本例中是 .)出现一次或多次。因此,.+ 会匹配一个或多个任意字符。
?:

在这里是一个惰性量词(lazy quantifier)。将 ? 放在 + 后面,使得正则表达式匹配尽可能少的字符即可(即最小匹配)。因此,.+? 会匹配至少一个字符,但会尽可能少地匹配,以便找到整个模式的结束部分。
>:

匹配字符 >,表示结束一个标签。

五、实例

5.1 匹配rgb颜色

#00
#ffffff
#ffaaff
#00hh80
#aabbcc
#000000
#ffffffff

匹配字符串:

#[a-fA-F0-9]{6}\b

其中\b是单词字符的边界,用来去掉最后一个#ffffffff

5.2 匹配IPV4

123
255.255.255.0
192.168.0.1
0.0.0.0
256.1.1.1
This is a string.
123.123.0

匹配字符串:

复杂还没搞懂

六、总结

6.1 评论区总结

来自评论区《喝酸奶的一颗竹子》

匹配符:
d? d出现0/1次
a* a可以出现0/多次
a+ a出现一次以上
a{6} a出现6次
a{2,} a出现2次以上
a{2,6} a出现2-6次
匹配多个字符:
(ab)+ ab出现一次以上
或运算:
a (cat|dog) 匹配 a cat or a dog
a cat|dog 匹配 a cat or dog
字符类:
匹配由abc构成的数据【abc】+ abc出现一次以上 abc aabbcc
【a-zA-Z0-9】 ABCabc123
^ 排除 【^0-9】 匹配0-9之外的数据(包括换行符)
元字符
\d 数字字符 \d+ 匹配一个以上的数字
\D 非数字字符
\w 单词字符 单词 数字 下划线即英文字符
\W 非单词字符
\s 空白符 包含空格和换行符
\S 非空白字符
\b 单词的边界 单词的开头或结尾 单词与符号之前的边界
\B 非单词的边界 符号与符号 单词与单词的边界
. 任意字符不包含换行符
\. 表示. 通过\进行了转意
^ 匹配行首 $ 匹配行尾
*+{}贪婪匹配
<strong><b>https://www.wondershare. com</strong></b>
<.+> 会匹配整串 因为是贪婪匹配
<.+?> 只匹配两个标签代码,+? 设置为懒惰匹配

6.2 视频总结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

恢复删除的文件:6个免费Windows电脑数据恢复软件

数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。您可以使用这些文件恢复软件来检索文件、文档、视频、图片等。这些应用程序支持多种标准文件格式&#xff0c;如 PNG、RTF、PDF、HTML、JPG、MP3 等。 经过超过 75 小时的研究&#xff0c;我分析了 25 最佳免费数据…

(持续更新)linux网络编程中需要注意的内核参数与网络机制

目录 零、基本说明 一、内核参数 二、相关机制 1、GRO &#xff08;1&#xff09;适用场景 &#xff08;2&#xff09;优缺点 &#xff08;3&#xff09;相关操作 2、Nagle 算法 &#xff08;1&#xff09;基本规则 &#xff08;2&#xff09;优缺点 &#xff08;3&…

多模块应用、发布使用第三方库(持续更新中)

目录: 1、多模块概述&#xff08;HAP、HSP、HAR&#xff09; HAR与HSP两种共享包的主要区别体现在&#xff1a; 2、三类模块&#xff1a; 3、创建项目&#xff1a;项目名&#xff1a;meituan &#xff08;1&#xff09;创建Ability类型的Module&#xff0c;编译后为HAP文件…

爬虫基础之HTTP基本原理

URL和URI 我们先了解一下 URI和 URL。URI的全称为 Uniform Resource ldentifer,即统一资源标志符;URL的全称为 Universal Resource Locator&#xff0c;即统一资源定位符。它们是什么意思呢?举例来说&#xff0c;https:/github.com/favicon.ico 既是一个 URI&#xff0c;也是…

Elasticsearch 集群部署

Elasticsearch 是一个分布式的搜索和分析引擎&#xff0c;广泛应用于日志分析、全文搜索、实时数据分析等场景。它以其高性能、高可用性和易用性而著称。本文档将引导您完成一个基本的 Elasticsearch 集群配置&#xff0c;包括节点间的通信、客户端访问、安全设置等关键步骤。我…

【一本通】PowerStrings

【一本通】PowerStrings C 代码C语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 求每个字符串的最短循环子串&#xff0c;输出循环次数。 输入 输入数据为多组数据&#xff0c;读取到"."字符时结束。每组数据仅有一行&…

Unity 沿圆周创建Sphere

思路 取圆上任意一点连接圆心即为半径&#xff0c;以此半径为斜边作直角三角形。当已知圆心位置与半径长度时&#xff0c;即可得该点与圆心在直角三角形两直角边方向上的位置偏移&#xff0c;从而得出该点的位置。 实现 核心代码 offsetX radius * Mathf.Cos(angle * Mathf…

华为无线AC、AP模式与上线解析(Huawei Wireless AC, AP Mode and Online Analysis)

华为无线AC、AP模式与上线解析 为了实现fit 瘦AP的集中式管理&#xff0c;我们需要统一把局域网内的所有AP上线到AC&#xff0c;由AC做集中式管理部署。这里我们需要理解CAPWAP协议&#xff0c;该协议分为两种报文&#xff1a;1、管理报文 2、数据报文。管理报文实际在抓包过程…

软考高级架构 - 10.5 软件架构演化评估方法

10.4 软件架构演化原则总结 本节提出了18条架构演化的核心原则&#xff0c;并为每条原则设计了简单而有效的度量方法&#xff0c;用于从系统整体层面提供实用信息&#xff0c;帮助评估和指导架构演化。 演化成本控制&#xff1a;成本小于重新开发成本&#xff0c;经济高效。进…

鸿蒙NEXT开发案例:颜文字搜索器

【引言】 本文将介绍一个名为“颜文字搜索器”的开发案例&#xff0c;该应用是基于鸿蒙NEXT平台构建的&#xff0c;旨在帮助用户快速查找和使用各种风格的表情符号。通过本案例的学习&#xff0c;读者可以了解如何在鸿蒙平台上进行数据处理、UI设计以及交互逻辑的实现。 【环…

【报错记录】Ubuntu22.04解决开机卡在 /dev/sda5 : clean , *files , *blocks

一个愿意伫立在巨人肩膀上的农民...... 一、错误现象 本人的电脑安装Windows10和Ubuntu22.04双系统&#xff0c;一次训练中电脑死机无法开机&#xff0c;重启之后便出现如下错误&#xff0c;在网上寻找过很多方法均无效&#xff0c;在root下禁用了samba服务&#xff0c;也无济…

关于睡懒觉

我们经常听到一个词&#xff1a;睡懒觉。 我认为&#xff0c;睡懒觉这个词&#xff0c;是错误的。 人&#xff0c;是需要睡眠的&#xff0c;睡不够&#xff0c;就不会醒。睡够了&#xff0c;自然会醒&#xff0c;也不想继续睡。不信你试试&#xff0c;睡够了&#xff0c;你…

数据地图怎么做?推荐这款数据可视化地图生成器

在数字化与信息化高速发展的今天&#xff0c;企业迎来了前所未有的发展机遇&#xff0c;规模迅速扩张&#xff0c;市场版图不断延伸。然而&#xff0c;伴随着这种快速的发展&#xff0c;一个不容忽视的问题逐渐浮出水面——如何精准高效地掌握分布在各地的分公司、业务点乃至整…

访问者模式的理解和实践

在软件开发过程中&#xff0c;设计模式为我们提供了解决常见问题的最佳实践。访问者模式&#xff08;Visitor Pattern&#xff09;是行为设计模式之一&#xff0c;它将数据操作与数据结构分离&#xff0c;使得在不修改数据结构的前提下&#xff0c;能够定义作用于这些元素的新的…

【Java 学习】面向程序的三大特性:封装、继承、多态

引言 1. 封装1.1 什么是封装呢&#xff1f;1.2 访问限定符1.3 使用封装 2. 继承2.1 为什么要有继承&#xff1f;2.2 继承的概念2.3 继承的语法2.4 访问父类成员2.4.1 子类中访问父类成员的变量2.4.2 访问父类的成员方法 2.5 super关键字2.6 子类的构造方法 3. 多态3.1 多态的概…

Burp与小程序梦中情缘

前言 在日常渗透工作中&#xff0c;有时需要对微信小程序进行抓包渗透&#xff0c;通过抓包&#xff0c;我们可以捕获小程序与服务器之间的通信数据&#xff0c;分析这些数据可以帮助我们发现潜在的安全漏洞&#xff0c;本文通过讲述三个方法在PC端来对小程序抓包渗透 文章目…

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 原模型 多图推理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 原模型 多图推理 flyfish 输入 输出 [‘第一张图片是一幅中国山水画&#xff0c;描绘了一座山峰和周围的树木。第二张图片是一张现代照片&#xff0c;展示了一座山峰和周围的自然景观&#xff0c;包括水体和植被。’] fro…

R语言学习笔记-1

1. 基础操作和函数 清空环境&#xff1a;rm(list ls()) 用于清空当前的R环境。 打印输出&#xff1a;print("Hello, world") 用于输出文本到控制台。 查看已安装包和加载包&#xff1a; search()&#xff1a;查看当前加载的包。install.packages("package_na…

基本分页存储管理

一、实验目的 目的&#xff1a;熟悉并掌握基本分页存储管理的思想及其实现方法&#xff0c;熟悉并掌握基本分页存储管理的分配和回收方式。 任务&#xff1a;模拟实现基本分页存储管理方式下内存空间的分配和回收。 二、实验内容 1、实验内容 内存空间的初始化——可以由用户输…

如何将CSDN的文章保存为PDF?

目录 1、打开CSDN文章2、按F12或者鼠标右键选择检查并进入控制台3、在控制台输入以下代码4、然后回车&#xff08;Enter&#xff09;如果纵向显示不全就横向 1、打开CSDN文章 2、按F12或者鼠标右键选择检查并进入控制台 3、在控制台输入以下代码 (function(){ $("#side&q…