正则表达式——参考视频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 视频总结

相关文章:
正则表达式——参考视频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.…...
【FFmpeg】FFmpeg 内存结构 ⑥ ( 搭建开发环境 | AVPacket 创建与释放代码分析 | AVPacket 内存使用注意事项 )
文章目录 一、搭建开发环境1、开发环境搭建参考2、项目搭建 二、AVPacket 创建与释放代码分析1、AVPacket 创建与释放代码2、Qt 单步调试方法3、单步调试 - 分析 AVPacket 创建与销毁代码 三、AVPacket 内存使用注意事项1、谨慎使用 av_init_packet 函数2、av_init_packet 函数…...
【多模态文档智能】OCR-free感知多模态大模型技术链路及训练数据细节
目前的一些多模态大模型的工作倾向于使用MLLM进行推理任务,然而,纯OCR任务偏向于模型的感知能力,对于文档场景,由于文字密度较高,现有方法往往通过增加图像token的数量来提升性能。这种策略在增加新的语言时࿰…...
Mybatis动态sql执行过程
动态SQL的执行原理主要涉及到在运行时根据条件动态地生成SQL语句,然后将其发送给数据库执行。以下是动态SQL执行原理的详细解释: 一、接收参数 动态SQL首先会根据用户的输入或系统的条件接收参数。这些参数可以是查询条件、更新数据等,它们…...
leetcode 31 Next Permutation
题意 找到下一个permutation是什么,对于一个数组[1,2,3],下一个排列就是[1, 3, 2] 链接 https://leetcode.com/problems/next-permutation/ 思考 首先任何一个permutation满足一个性质,从某个位置往后一定是降序。…...
每日一练 | 华为 eSight 创建的缺省角色
01 真题题目 下列选项中,不属于华为 eSight 创建的缺省角色的是: A. Administrator B. Monitor C. Operator D. End-User 02 真题答案 D 03 答案解析 华为 eSight 是一款综合性的网络管理平台,提供了多种管理和监控功能。 为了确保不同用…...
PyTorch基本使用-自动微分模块
学习目的:掌握自动微分模块的使用 训练神经网络时,最常用的算法就是反向传播。在该算法中,参数(模型权重)会根据损失函数关于对应参数的梯度进行调整。为了计算这些梯度,PyTorch 内置了名为 torch.autogra…...
libevent-Reactor设计模式【1】
一、Libevent概述 1、简介 Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大&#…...
奇奇怪怪的错误-Tag和space不兼容
报错信息如下: TabError: inconsistent use of tabs and spaces in indentation make: *** [Makefile:24: train] Error 1不能按Tab,要老老实实按space 不过可以在编辑器里面改,把它们调整成一致的;...
29.攻防世界ics-06
ics-06 难度:1 方向:Web 题目描述: 云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。 进入靶场 发现有一处能点动 多了个id1 我其实尝试改过id数,不过没什么变化…...
强化学习路径规划:基于SARSA算法的移动机器人路径规划,可以更改地图大小及起始点,可以自定义障碍物,MATLAB代码
一、SARSA算法概述 SARSA(State-Action-Reward-State-Action)是一种在线强化学习算法,用于解决决策问题,特别是在部分可观测的马尔可夫决策过程(POMDPs)中。SARSA算法的核心思想是通过与环境的交互来学习一…...
【MFC】如何读取rtf文件并进行展示
tf是微软的一个带格式的文件,比word简单,我们可以用写字板等程序打开编辑。下面以具体实例讲解如何在自己程序中展示rtf文件。 首先使用VS2022创建一个MFC的工程。 VIEW类需要选择richview类,用于展示,如下图: 运行效…...
Vulhub:Log4j[漏洞复现]
CVE-2017-5645(Log4j反序列化) 启动靶场环境 docker-compose up -d 靶机IPV4地址 ifconfig | grep eth0 -A 5 ┌──(root㉿kali)-[/home/kali/Desktop/temp] └─# ifconfig | grep eth0 -A 5 eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 in…...
面向预测性维护的TinyML技术栈全面综述
论文标题:A Holistic Review of the TinyML Stack for Predictive Maintenance(面向预测性维护的TinyML技术栈全面综述) 作者信息:Emil Njor, Mohammad Amin Hasanpour, Jan Madsen, Xenofon Fafoutis,均来自丹麦技术…...
沈阳理工大学《2024年811自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《沈阳理工大学811自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...
用前端html如何实现2024烟花效果
用HTML、CSS和JavaScript编写的网页,主要用于展示“2024新年快乐!”的文字形式烟花效果。下面是对代码主要部分的分析: HTML结构 包含三个<canvas>元素,用于绘制动画。引入百度统计的脚本。 CSS样式 设置body的背景为黑…...
Redis应用-在用户数据里的应用
1.社区电商的业务闭环 接下来介绍的社区电商是以Redis作为主体技术、以MySQL和RocketMQ作为辅助技术实现的。 (1)社区电商运作模式 社区电商的关键点在于社区,而电商则是辅助性质(次要地位,流量变现)。社区可以分成很多种社区,比如美食社区、美妆社区、影评社区、妈妈社区…...
C++ 中面向对象编程如实现数据隐藏
在C中,面向对象编程(OOP)通过封装(Encapsulation)来实现数据隐藏。封装是OOP的一个核心概念,它允许将对象的属性和行为(即数据和方法)组合在一起,并对外隐藏对象的内部实…...
JavaEE 【知识改变命运】04 多线程(3)
文章目录 多线程带来的风险-线程安全线程不安全的举例分析产出线程安全的原因:1.线程是抢占式的2. 多线程修改同一个变量(程序的要求)3. 原子性4. 内存可见性5. 指令重排序 总结线程安全问题产生的原因解决线程安全问题1. synchronized关键字…...
gz中生成模型
生成模型 通过服务调用生成 还记得parameter_bridge 吗? 我们在生成桥接的时候调用了这个cpp文件。 一个 parameter_bridge 实例用于消息传递(传感器数据)。之前的例子 另一个 parameter_bridge 实例用于服务桥接(动态生成模型…...
精通传感器融合:基于 KITTI 数据的 LiDAR 障碍物检测 — 第一部分
原文:towardsdatascience.com/sensor-fusion-kitti-lidar-based-obstacle-detection-part-1-9c5f4bc8d497?sourcecollection_archive---------4-----------------------#2024-12-25 如何使用 LiDAR 数据进行无监督学习的障碍物检测 https://medium.com/eroltak?s…...
seo推广员如何进行用户体验优化_seo推广员的工作内容有哪些
SEO推广员如何进行用户体验优化 在当今的数字化时代,用户体验(UX)已经成为网站运营和SEO推广的重要组成部分。一个优秀的用户体验不仅能够提高用户的满意度和忠诚度,还能直接影响网站的SEO表现。作为一名SEO推广员,如…...
从实战出发:解析墨水屏LUT移植与局刷参数调优的通用方法论
1. 墨水屏LUT基础认知:从"电子墨水"到驱动逻辑 第一次拆解墨水屏驱动板时,我盯着那些密密麻麻的电路走线和芯片引脚直发懵。直到把屏幕泡在酒精里不小心擦掉了表面涂层,才真正看清"电子墨水"的微观结构——那些悬浮在液体…...
OpenClaw+百川2-13B量化模型:个人知识库自动整理方案实测
OpenClaw百川2-13B量化模型:个人知识库自动整理方案实测 1. 为什么需要自动化知识管理 作为一个长期与技术文档打交道的开发者,我的电脑里堆积着超过200GB的未整理资料——从会议录音转写的文字稿、GitHub扒下来的开源项目说明,到随手保存的…...
HC32F460串口DMA发送中断接收避坑指南:静电干扰、丢字节问题与中断配置详解
HC32F460串口通信实战:DMA发送与中断接收的深度优化指南 在华大HC32F460系列MCU的实际应用中,串口通信作为最基础也最关键的通信接口之一,其稳定性和效率直接影响整个系统的可靠性。不同于STM32等传统MCU的固定中断映射机制,HC32F…...
资源占用实测:gemma-3-12b-it在OpenClaw不同任务下的内存消耗
资源占用实测:gemma-3-12b-it在OpenClaw不同任务下的内存消耗 1. 测试背景与实验设计 最近在本地部署了OpenClaw框架,并接入gemma-3-12b-it模型作为后端引擎。作为一个追求效率的开发者,我特别关注这个组合在实际任务中的资源消耗情况。毕竟…...
SQL删除视图会删掉原数据吗_DROP VIEW的安全性分析
DROP VIEW仅删除视图定义而非数据,不影响基表;它不校验下游依赖,删后应用调用会报错;真正删数据的是DROP TABLE或DELETE等操作。DELETE、TRUNCATE 和 DROP VIEW 的作用对象完全不同不会删原表数据。DROP VIEW 只是删掉一个「查询的…...
大模型训练实战:分布式训练、显存优化与知识蒸馏全解析!
全景路线图: 我们将按模块逐步展开,每个模块都是最终搭建完整平台的一块拼图:之前的章节参考我之前写的文章;G. 分布式训练篇:大模型训练的工程实践 – 学习在多卡多机环境下训练大模型的方法,包括数据并行…...
STM32堆栈原理与内存管理实践指南
1. 堆栈基础概念解析在嵌入式系统开发中,堆栈(Stack)是最基础也是最重要的内存管理机制之一。简单来说,堆栈就是一块特殊组织方式的内存区域,采用"后进先出"(LIFO)的原则进行数据存取。理解堆栈的工作原理对于STM32开发至关重要&am…...
从零到一:用Python打造你的专属桌面宠物,附完整源码与exe打包指南
1. 环境准备与工具安装 第一次接触Python桌面应用开发的朋友可能会觉得无从下手,但其实只需要准备好几个基础工具就能轻松开始。我刚开始做桌宠项目时也踩过不少坑,这里把最稳妥的配置方案分享给大家。 Python环境是首要条件,推荐使用3.8以上…...
