Python(20)正则表达式(Regular Expression)中常用函数用法
大家好!我是码银🥰
欢迎关注🥰:
CSDN:码银
公众号:码银学编程
正文
正则表达式
粗略的定义:正则表达式是一个特殊的字符序列,帮助用户非常便捷的检查一个字符串是否符合某种模式。例如:平时我们的登陆密码,必须是字母和数字的组合,就可以使用正则表达式。
正则表达式的特点:灵活性、逻辑性和功能性非常强,可以迅速地用极简单的方式达到字符串的复杂控制。然而,对于刚接触的人来说,可能会觉得比较晦涩难懂。
Python有关正则表达式的方法是在re模块内,所以使用正则表达式需要导入re模块。
import re
本篇文章先介绍一下re模块中的几个函数:
函数 | 功能 |
re.match() | 用于从字符串的开始位置进行匹配,如果起始位置匹配 成功,结果为Match对象,否则结果为None。 |
re.search() | 用于在整个字符串中搜索第一个匹配的值,如果匹配成 功,结果为Match对象,否则结果为None。 |
re.findall() | 用于在整个字符串搜索所有符合正则表达式的值,结果 是一个列表类型。 |
re.sub () | 用于实现对字符串中指定子串的替换 |
re.split() | 字符串中aplit(方法功能相同,都是分隔字符串 |
re.match()
这个方法和re.search()方法类似,但是也有点小差别的:
- re.match从字符串的开头开始匹配(也就是说待匹配字符在中间是匹配不到的),如果找到匹配项,则返回一个匹配对象;如果没有找到匹配项,则返回None。
- re.search在整个字符串中搜索匹配项,如果找到匹配项,则返回一个匹配对象;如果没有找到匹配项,则返回None。
import re # 定义一个字符串变量msg,包含一段描述
msg = 'During my two years living in London, I found that the British people really enjoy eating and drinking outdoors.' # 定义一个字符串变量pattern,包含我们要在msg中搜索的文本模式
pattern = 'During' # 使用re.match函数搜索msg中与pattern匹配的文本。如果找到匹配项,则返回一个匹配对象;否则返回None
txt = re.match(pattern,msg) # 检查是否找到了匹配项
if txt!=None : # 如果找到了匹配项,则打印匹配的文本 print("测试1输出: ", txt.group())
else: # 如果没有找到匹配项,则打印“测试1搜寻失败” print("测试1搜寻失败") # 定义另一个字符串变量pattern2,包含我们要在msg中搜索的另一个文本模式
pattern2='my' txt = re .match(pattern2, msg) if txt!=None: print("测试2输出:",txt.group())
else: print("测试2搜寻失败")
re.search()
由于re.search()方发是全文搜索,所以文章中只要出现对应字符串(开头、中间位置都无所谓,这是与re.match最大的区别),就会返回正确结果。
import remsg = 'During my two years living in London, I found that the British people really enjoy eating and drinking outdoors.'
pattern = 'During'
txt = re.search(pattern, msg)if txt != None:print("测试1输出: ", txt.group())
else: print("测试1搜寻失败") pattern2 = 'my'
txt = re.search(pattern2, msg)if txt != None:print("测试2输出:", txt.group())
else:print("测试2搜寻失败")
输出结果:
测试1输出: During
测试2输出: my
re.findall()
re.findall(pattern, string, flags=0),用于在整个字符串搜索所有符合正则表达式的值,结果
是一个列表类型
pattern
:正则表达式模式,用于匹配字符串。string
:要搜索的字符串。flags
:可选参数,指定正则表达式的匹配选项,如多行匹配、忽略大小写等。
import re# 定义一个正则表达式模式,匹配所有的数字
pattern = r'\d+'# 要搜索的字符串
string = 'abc123 def456 ghi789'# 使用 re.findall() 查找所有匹配项
matches = re.findall(pattern, string)print(matches)
其中\d是“元字符”,具有特殊意义的专用字符,在另外一章文章中在做解释吧。
在上面的示例中,我们定义了一个正则表达式模式 \d+
,用于匹配一个或多个数字。然后,我们使用 re.findall()
函数在字符串 abc123 def456 ghi789
中查找所有匹配项。最后,我们将结果打印出来,可以看到成功匹配到了所有的数字。
re.sub ()
re.sub(pattern, repl, string, count=0, flags=0),用于在字符串中使用正则表达式进行查找和替换
pattern
:正则表达式模式,用于匹配字符串。repl
:替换模式,表示找到匹配项后要替换成的字符串。string
:要搜索的字符串。count
:可选参数,指定替换操作的次数,默认为 0 表示替换所有匹配项。flags
:可选参数,指定正则表达式的匹配选项,如多行匹配、忽略大小写等。
import re
msg = 'During my two years living in London'
pattern1 = 'years'
#欲搜寻字符串
newstr = 'days'
#新字符串
txt = re.sub(pattern1 ,newstr ,msg)
#如果找到则取代
if txt != msg:print("取代成功:", txt)
else:print("取代失败:",txt)pattern2 = 'Eli Thomson'
#欲搜寻字符串
txt = re.sub(pattern2,newstr,msg)
#如果找到则取代
if txt!= msg:print("取代成功:",txt)
else:print("取代失败: " ,txt)
D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test1.py
取代成功: During my two days living in London
取代失败: During my two years living in London
re.split()
re.split(pattern, string, maxsplit=0, flags=0),用于根据正则表达式模式将字符串分割成多个子字符串,并返回一个包含所有子字符串的列表。
pattern
:正则表达式模式,用于指定分割规则。string
:要分割的字符串。maxsplit
:可选参数,指定最大分割次数,默认为 0 表示不限制分割次数。sflags
:可选参数,指定正则表达式的匹配选项,如多行匹配、忽略大小写等。
import res='https://www.baidu.com/s?wd=CSDN&ie=utf-8&tn=54093922_14_hao_pg'
pattern='[?|&]'
txt=re.split(pattern,s)
print(txt)pattern = ','
string = 'apple,banana,orange'
split_strings = re.split(pattern, string)
print(split_strings) # 输出: ['apple', 'banana', 'orange']
输出结果:
D:\anaconda2019\python.exe D:/pyprogect/正则表达式/test2.py
['https://www.baidu.com/s', 'wd=CSDN', 'ie=utf-8', 'tn=54093922_14_hao_pg']
['apple', 'banana', 'orange']Process finished with exit code 0
相关文章:

Python(20)正则表达式(Regular Expression)中常用函数用法
大家好!我是码银🥰 欢迎关注🥰: CSDN:码银 公众号:码银学编程 正文 正则表达式 粗略的定义:正则表达式是一个特殊的字符序列,帮助用户非常便捷的检查一个字符串是否符合某种模…...
docker 离线安装镜像
一、导出镜像 下载完镜像后,我们需要将其导出为tar文件,以便在离线环境中使用。 执行以下命令导出镜像: docker save -o <保存路径>/<镜像名>_<版本>.tar <镜像名>:<版本>其中,<保存路径>是…...

由vscode自动升级导致的“终端可以ssh服务器,但是vscode无法连接服务器”
问题描述 简单来说就是,ssh配置没动,前两天还可以用vscode连接服务器,今天突然就连不上了,但是用本地终端ssh可以顺利连接。 连接情况 我的ssh配置如下: Host gpu3HostName aaaUser zwx现在直接在终端中进行ssh&am…...

typecho 在文章中添加 bilibili 视频
一、获取视频来源: 可以有2种方式来定位一个 bilibili 视频: 第一种是使用 bvid 参数定位第二种是使用 aid 参数定位 如何获取这两个参数? 首先我们可以看看 bilibili 网站中的视频页面链接其实可以分为两种: 第一种是类似&a…...

Android.mk 语法详解
一.Android.mk简介 Android.mk 是Android 提供的一种makefile 文件,注意用来编译生成(exe,so,a,jar,apk)等文件。 二.Android.mk编写 分析一个最简单的Android.mk LOCAL_PATH : $(call my-dir) //定义了…...

ChatGPT高效提问—prompt基础
ChatGPT高效提问—prompt基础 设计一个好的prompt对于获取理想的生成结果至关重要。通过选择合适的关键词、提供明确的上下文、设置特定的约束条件,可以引导模型生成符合预期的回复。例如,在对话中,可以使用明确的问题或陈述引导模型生成…...
Elasticsearch 中的索引的分区(Shards)和副本(Replicas)的使用
Elasticsearch是一个高性能的、分布式的搜索与数据分析引擎,广泛用于全文搜索、结构化搜索、分析以及这三者的组合场景。在Elasticsearch中,“索引”(Index)是其最基本的数据管理单位,可以类比为传统关系数据库中的“数…...
智慧工地反光衣识别检测系统-自动识别是否穿着制定工作服---豌豆云
智慧工地反光衣识别检测特定地区工作人员不穿反光服装个人行为预警,一旦检测到某些不穿反光服装施工作业人员智慧工地反光衣识别检测马上开启警报。 真真正正做到事前预警、事中检测、过后管理。安全操作规程工作人员从繁杂无趣的盯显示屏的每日任务中抽身出去。 …...
vue绘制语音波形图---wavesurfer.js
文章目录 创建实例optionsmethod接收Blob流 https://wavesurfer.xyz/ 创建实例 引入插件:import WaveSurfer from "wavesurfer.js"创建实例对象:this.wavesurfer WaveSurfer.create(options); <div id"waveform"><!-- t…...

MPLS——多协议标签交换
目录 1 多协议标签交换 MPLS 1.1 MPLS 的工作原理 1.1.1 MPLS 工作特点 1.1.2 MPLS 协议的基本原理 1.1.3 MPLS 的基本工作过程 1.2 转发等价类 FEC 1.2.1 FEC 用于负载平衡 1.3 MPLS 首部的位置与格式 1.3.1 MPLS 首部的位置 1.3.2 MPLS 首部的格式 1.4 新一代的…...

Idea使用Lombok失效解决方案
问题描述 启动项目时,使用lombok插件中slf4g注解后其中的log显示找不到变量 解决方案 在以下位置加入该配置-Djps.track.ap.dependenciesfalse Preferences | Build, Execution, Deployment | Compiler 之后保存应用就好,亲测有效。...

Java实现网上药店系统 JAVA+Vue+SpringBoot+MySQL
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 药品类型模块2.3 药品档案模块2.4 药品订单模块2.5 药品收藏模块2.6 药品资讯模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 药品表3.2.3 药品订单表3.2.4 药品收藏表3.2.5 药品留言表…...

谁是嫌疑犯问题
问题描述: 有6名犯罪嫌疑人A、B、C、D、E、F,已知如下事实: A、B至少有1人作案; A、E、F三人中至少有2人参与作案; A、D不可能是同案犯; B、C或同时作案,或与本案无关; C、D中…...

Netty中使用编解码器框架
目录 什么是编解码器? 解码器 将字节解码为消息 将一种消息类型解码为另一种 TooLongFrameException 编码器 将消息编码为字节 将消息编码为消息 编解码器类 通过http协议实现SSL/TLS和Web服务 什么是编解码器? 每个网络应用程序都必须定义如何…...

【漏洞复现】斐讯FIR151M路由器未授权下载漏洞
Nx01 产品简介 斐讯数据通信技术有限公司成立于2009年,是为用户提供智慧家庭领域智能产品和云服务的科技创新性企业。 Nx02 漏洞描述 斐讯 FIR151M路由器配置文件未授权下载漏洞,攻击者可利用该漏洞获取敏感信息。 Nx03 产品主页 fofa-query: app"PHICOMM-F…...

【SpringBoot】application配置(5)
type-aliases-package: com.rabbiter.cm.domaintype-aliases-package: 这个配置用于指定mybatis的别名,别名是一个简化的方式,让你在Mapper xml 文件中引用java类型,而不需要使用使用完整的类名。例如,如果你在 com.rabbiter.cm.d…...

Linux安全技术与iptables防火墙
一.安全技术: 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,…...
QT QCombox 样式表 比起作用
对QCombox在ui编辑器中进行美化,发现外表美化有效果,但下拉框的高度美化的没效果,查看样式表也没有没问题,样式表中内容如下。 QComboBox#curve_comboBox {min-width: 150px;min-height:40;max-width: 150px;max-height:40;borde…...

在 Windows 10 上使用 Visual Studio 2022 进行 C++ 桌面开发
工具下载链接:https://pan.quark.cn/s/c70b23901ccb 环境介绍 在今天的快速发展的软件开发行业中,选择合适的开发环境是非常关键的一步。对于C开发人员来说,Visual Studio 2022(VS2022)是一个强大的集成开发环境&…...

如何安装x11vnc并结合cpolar实现win远程桌面Deepin
文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂ÿ…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...