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

news/2024/12/15 11:05:57/

智能指针

  • 一、背景
    • 🎈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 视频总结

在这里插入图片描述


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

相关文章

Leetcode二叉树部分笔记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Leetcode二叉树部分笔记 1.二叉树的最大深度2.同样的树3.翻转二叉树4.对称二叉树**5. **填充每个节点的下一个右侧节点指针 II**6. 二叉树展开为链表7. 路经总和8.完全二叉树…

.NET平台使用C#设置Excel单元格数值格式

设置Excel单元格的数字格式是创建、修改和格式化Excel文档的关键步骤之一&#xff0c;它不仅确保了数据的正确表示&#xff0c;还能够增强数据的可读性和专业性。正确的数字格式可以帮助用户更直观地理解数值的意义&#xff0c;减少误解&#xff0c;并且对于自动化报告生成、财…

yolov8 转华为昇腾om脚本

目录 yolov8 转华为昇腾 om脚本 测试ok 推理demo: yolov8 转华为昇腾 om脚本 测试ok import sys import osos.chdir(os.path.dirname(os.path.abspath(__file__)))import torchcurrent_dir = os.path.dirname(os.path.abspath(__file__))paths = [os.path.abspath(__file__)…

基于 SSM 的校园一卡通密钥加密传输机制与安全性能提升

第4章 系统设计 市面上设计比较好的系统都有一个共同特征&#xff0c;就是主题鲜明突出。通过对页面简洁清晰的布局&#xff0c;让页面的内容&#xff0c;包括文字语言&#xff0c;或者视频图片等元素可以清晰表达出系统的主题。让来访用户无需花费过多精力和时间找寻需要的内容…

IDEA 可视化使用 git rebase 合并分支步骤 使git分支树保持整洁

模拟环境 dev 分支开发完一个功能&#xff0c;需要合并到 master 分支&#xff0c;如果现在直接 merge 合并的话 git分支树会出现杂乱分叉&#xff0c;先把 master 分支 rebase 到 dev git分支树就会是整洁的一条直线 git rebase介绍 rebase:翻译成中文是重新设定&#xff0c;…

Linux(网络协议和管理)

后面也会持续更新&#xff0c;学到新东西会在其中补充。 建议按顺序食用&#xff0c;欢迎批评或者交流&#xff01; 缺什么东西欢迎评论&#xff01;我都会及时修改的&#xff01; 在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频 王晓春老师的个人空间…

hutool一些典型的方法使用笔记

hutool一些典型的方法使用笔记 1 克隆1.1 深克隆 2类型转换2.1其他类型转换为字符串2.2 转换为日期对象2.3 数组转集合2.4 Unicode和字符串转换2.5 数字转中文 文档地址&#xff1a;https://blog.csdn.net/dxjren/article/details/144468399 1 克隆 1.1 深克隆 定义一个实体类…

一次tomcat实战jvm线上问题定位排查和解决

问题分析&#xff1a; 问题来源是客户通过闲鱼找到了我这边进行问题的排查&#xff0c;给我发了一个报错日志&#xff0c;让我帮忙分析。 首先他的项目比较老&#xff0c;很多年以前开发的软件&#xff0c;但是具体做什么业务我不知道。下面来看日志的报错分析。 问题&#…