Python-re模块-正则表达式模块常用方法
re模块介绍:
Python的re模块提供了正则表达式的功能,可以用来进行高级的字符串匹配和处理。re模块的主要功能包括:
-
编译正则表达式 - 使用re.compile()可以编译正则表达式字符串,生成正则表达式对象。
-
匹配字符串 - 使用正则表达式对象的match()、search()、findall()等方法可以在字符串进行匹配。
-
替换字符串 - 使用sub()和subn()方法可以使用正则表达式进行字符串替换。
-
分割字符串 - 使用split()方法可以按照正则表达式的匹配结果分割字符串。
-
获取匹配信息 - match对象包含了各种匹配信息,如匹配字符串、位置等。
-
标志 - 可以使用标志来修改正则表达式的匹配方式,如忽略大小写,多行匹配等。
-
模块级函数 - re模块还提供了模块级的正则匹配函数,如escape()可以对字符串转义。
re模块的这些功能覆盖了正则表达式的常见用法。使用re模块可以简化字符串的模式匹配、信息提取、过滤替换、切分等操作
需要注意的一点是,re模块主要针对ASCII字符,对Unicode的支持不太友好。此时可以考虑第三方模块如regex
总之,re模块是Python中使用正则表达式的最基础的模块,非常值得学习和掌握
Python re模块详解
re模块提供正则表达式模式匹配操作,主要有以下函数:
match()
匹配字符串开头位置,返回match对象或None:
import rem = re.match('foo','foo')
print(m.group()) # 'foo'm = re.match('foo','bar')
print(m) # None
search()
搜索字符串任意位置,返回match对象或None:
m = re.search('foo','hello food')
print(m.group()) # 'foo'
findall()
搜索字符串,返回所有匹配的列表:
m = re.findall('\d','123abc456')
print(m) # ['1', '2', '3', '4', '5', '6']
sub()
使用正则表达式进行字符串替换:
text = re.sub('\d', '0', '123abc456')
print(text) # '000abc000'
split()
使用正则表达式进行字符串分割:
m = re.split('\d+', '123abc456')
print(m) # ['abc', '']
compile()
编译正则表达式,返回pattern对象:
pat = re.compile('\d')
m = pat.match('123')
finditer()
在Python的re模块中,re.finditer()
是非常有用的一个正则表达式匹配函数。
re.finditer()
的作用是在字符串中找到所有的匹配,并返回一个迭代器。相比re.findall()
和re.finditer()
有以下区别:
re.findall()
:返回一个匹配字符串的列表re.finditer()
:返回一个匹配对象迭代器
示例:
import res = 'hello 123 456 world'matches = re.findall('\d+', s)
print(matches) # ['123', '456']iterator = re.finditer('\d+', s)
print(iterator) # <callable_iterator object at 0x10f5f3b50>for match in iterator:print(match) # <re.Match object; span=(6, 9), match='123'>
# <re.Match object; span=(10, 13), match='456'>
re.finditer()
的返回对象是一个迭代器,每次迭代返回一个Match对象,包含匹配的字符串和位置。
主要优点是:
- 不需要先存储所有匹配,更save内存
- 可以逐个访问每个匹配
- 提供了匹配的位置信息
所以在需要定位每个匹配的位置时,re.finditer()
非常有用。
fullmatch()
匹配整个字符串,返回match对象或None:
import rem = re.fullmatch('foo','foo')
print(m.group()) # 'foo' m = re.fullmatch('foo','foo bar')
print(m) # None
escape()
将特殊字符转义,可以将字符串转化为正则表达式的字符串形式:
escaped = re.escape('http://example.com')
print(escaped) # 'http:\/\/example\.com'
purge()
清除缓存的正则表达式,可以避免重复编译正则表达式:
pat = re.compile(r'\d+')
re.purge() # 清除缓存
match.expand()
使用匹配到的组内容,替换字符串模板:
m = re.match(r'(?P<name>\w+) (\w+)', 'John Doe')
print(m.expand('Hello \g<name>')) # 'Hello John'
(?P\w+)和 group(“name”) 搭配使用
import repattern = r'(?P<first_name>\w+) (?P<last_name>\w+)'string = 'John Doe'# 匹配字符串
m = re.match(pattern, string)# 使用命名组获取匹配
first_name = m.group('first_name')
last_name = m.group('last_name')print(first_name) # John
print(last_name) # Doe# 替换字符串
new_string = re.sub(pattern, r'\g<last_name>, \g<first_name>', string)
print(new_string) # Doe, John
在这个例子中,正则表达式模式使用了两个命名捕获组first_name和last_name。
然后在获取匹配后,可以直接通过命名引用匹配的内容。
在替换字符串时,也可以利用命名组引用,使代码更简洁清晰。
所以命名捕获组可以让正则匹配和处理更高效方便。
以上是re模块的常用函数
相关文章:

Python-re模块-正则表达式模块常用方法
re模块介绍: Python的re模块提供了正则表达式的功能,可以用来进行高级的字符串匹配和处理。re模块的主要功能包括: 编译正则表达式 - 使用re.compile()可以编译正则表达式字符串,生成正则表达式对象。 匹配字符串 - 使用正则表达式对象的match()、search()、finda…...

修改el-select或者el-input样式失效
下午改el-input和el-select这两个的样式真的烦,,,还不如写原生标签了。。 样式使用的是sass 我已经在样式器中挨着挨着去找了,把层级的类都写下来了 .select-wraper{//下拉框.el-select{.el-input .el-input__wrapper{backgrou…...

【Apifox】Apifox设置参数说明:
文章目录 一、效果:二、Query参数:三、返回响应: 一、效果: 二、Query参数: 三、返回响应:...

离线数仓中,为什么用两个flume,一个kafka
实时数仓中,为什么没有零点漂移问题? 因为flink直接取的事件时间用kafka是为了速度快,并且数据不丢,那为什么既用了kafkachannel,也用了kafka,而不只用kafkachannel呢? 因为需要削峰填谷离线数仓…...

p7付费课程笔记6:CMS GC
目录 前言 工作步骤 缺点 问题 前言 上一章节我们讲了串/并行GC,这一章节说下CMS GC。看前思考一个问题,并行GC与CMS GC的区别在哪里。 什么是CMS收集器 CMS(Concurrent Mark-Sweep)是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于…...

Linux性能分析--cpuinfo的内核实现
目录 一、引言 二、Linux性能分析工具介绍 ------>2.1、proc ------------>2.1.1、内核中的proc文件系统 ------------>2.2.2、proc的实现 ------>2.2、cpuinfo ------------>2.2.1、cpuinfo的内核实现 ------------>2.2.2、寄存器获取cpuinfo数据 …...

鲁大师7月新机性能/流畅/久用榜:骁龙8 Gen2领先版亮相,性能跑分再破新高
摘要:iQOO 11S突破上限,红魔8S Pro再创新高 继五月六月,搭载天玑9200的机型相继迎来上市之后,高通也终于按耐不住。 本月所有上市的新机均搭载高通骁龙系列芯片,其中骁龙8 Gen2领先版迎来首次亮相,除了主打…...

【QT学习】01:helloqt
helloqt OVERVIEW helloqt一、helloqt1.使用向导创建2.手动创建3.pro文件4.Qt应用程序框架 二、按钮创建main.cppmywidget.cpp 三、对象模型1.对象树引入2.存在的问题 一、helloqt 创建一个qt项目,可以使用creator的向导创建,也可自己手动创建ÿ…...

学习gRPC (三)
测试gRPC例子 编写proto文件实现服务端代码实现客户端代码 通过gRPC 已经编译并且安装好之后,就可以在源码目录下找到example 文件夹下来试用gRPC 提供的例子。 在这里我使用VS2022来打开仓库目录下example/cpp/helloworld目录 编写proto文件 下面是我改写的exa…...

【html】学习记录
1.在建立一个页面的时候不是打开软件就开始写代码,要先规划好页面的布局框架,不然思想会很混乱,如做个人简历,要分区分块,把每个区域的内容搞清楚。 2.html的很多标签看上去作用都是一样的,但是实际有很大不…...

2023年人工智能技术与智慧城市发展白皮书
人工智能与智慧城市是当前热门的话题和概念,通过将人工智能技术应用在城市管理和服务中,利用自动化、智能化和数据化的方式提高城市运行效率和人民生活质量,最终实现城市发展的智慧化,提升城市居民的幸福感。 AI技术在城市中的应…...

《Python入门到精通》条件控制 if 语句
「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 if 语句 1、四种语法格式1.1、if1.2、if else1.3、if elif else1.4、if 嵌套 2、…...

如何编写一个易于维护的考试系统源码
编写一个易于维护的考试系统源码对于开发人员来说非常重要。一个易于维护的系统可以使代码更易于理解、修改和扩展,从而提高开发效率和系统稳定性。 第一步:良好的项目结构 良好的项目结构是一个易于维护的源码的基础。可以按照模块、功能或层次等方式…...

day 2 |977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II
目录: 解题及思路学习 977.有序数组的平方 https://leetcode.cn/problems/squares-of-a-sorted-array/submissions/ 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1&a…...

【力扣每日一题】2023.8.2 翻转卡片游戏
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 这道题不是什么翻转卡片游戏,这就是纯纯的文字游戏,要是能看懂题目那就是非常简单,接下来我就给大家分…...

IDEA设置中文 中文插件
IDEA设置中文 中文插件 首先进入idea File --> Setting --> Plugin 输入Chinese 搜索插件 选择下图插件进行install 安装完成后,重启idea即可...

Python——调用webdriver.Chrome() 报错
今天运行脚本,报错内容如下: collecting ... login_case.py:None (login_case.py) login_case.py:11: in <module> dr webdriver.Chrome() D:\Program Files (x86)\Python\Python39\Lib\site-packages\selenium\webdriver\chrome\webdriver.p…...

人工智能发展的五个主要技术方向是什么?
人工智能主要分支介绍 通讯、感知与行动是现代人工智能的三个关键能力,在这里我们将根据这些能力/应用对这三个技术领域进行介绍: 计算机视觉(CV) 自然语言处理(NLP) 在 NLP 领域中,将覆盖文本挖掘/分类、机器翻译和语音识别。 机器人 1、…...

机器学习知识经验分享之六:决策树
python语言用于深度学习较为广泛,R语言用于机器学习领域中的数据预测和数据处理算法较多,后续将更多分享机器学习数据预测相关知识的分享,有需要的朋友可持续关注,有疑问可以关注后私信留言。 目录 一、R语言介绍 二、R语言安装…...

回归预测 | MATLAB实现SO-CNN-GRU蛇群算法优化卷积门控循环单元多输入单输出回归预测
回归预测 | MATLAB实现SO-CNN-GRU蛇群算法优化卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现SO-CNN-GRU蛇群算法优化卷积门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SO-CNN-GRU蛇群算法优化卷积门控循…...

309. 买卖股票的最佳时机含冷冻期
给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后,你无法在第二天买入股票 …...

P1119 灾后重建
题目背景 B 地区在地震过后,所有村庄都造成了一定的损毁,而这场地震却没对公路造成什么影响。但是在村庄重建好之前,所有与未重建完成的村庄的公路均无法通车。换句话说,只有连接着两个重建完成的村庄的公路才能通车,…...

USB采集卡如何打pts
一、使用采集卡提供的pts 二、手动打pts 1.usb采集设备pts的问题 2.采集卡驱动,UVC/UAC,ffmpeg的关系 3.如何自己打pts 4.音视频同步调优 5.NTP等联网调时工具带来的不同步问题 一、使用采集卡提供的pts 我们用使用pc摄像头和使用pc麦克风声卡里的方法&…...

机器学习实战13-超导体材料的临界温度预测与分析(决策树回归,梯度提升回归,随机森林回归和Bagging回归)
大家好,我是微学AI,今天给大家介绍一下机器学习实战13-超导体材料的临界温度预测与分析(决策树回归,梯度提升回归,随机森林回归和Bagging回归),这几天引爆网络的科技大新闻就是韩国科研团队宣称发现了室温超导材料-LK-99,这种材料…...

小研究 - 一种复杂微服务系统异常行为分析与定位算法(二)
针对极端学生化偏差(Extreme Studentized &#…...

Docker 安装 MySQL5.6
方法一、docker pull mysql 查找Docker Hub上的mysql镜像 #docker search mysql 这里我们拉取官方的镜像,标签为5.6 #docker pull mysql:5.6 (第一次启动Docker-MySql主要是查看Docker里面MySQL的默认配置,数据位置,日志位置,配…...

vue组件跳层级时的事件处理 (事件的广播与派发)
相信大家一定用过elementui这个组件库,那么对里面的表单组件一定不陌生。 最常用的几个组件就是el-form,el-form-item,el-input,表单校验时的错误提示功能是交给el-form-item来实现的。当el-input填写时触发校验规则,…...

毫米波雷达 TI IWR6843 官方测试程序(Out Of Box Demo)
1.硬件准备 1.IWR6843AOP板子 2.两个USB转串口模块(因为我的是自己做的板子,板子上没有集成USB转串口芯片) 2.软件准备 1.最新版本的CCS,注意后缀没有THEIA https://www.ti.com/tool/CCSTUDIO?DCMPdsp_ccs_v4&HQSccs 2.最…...

中大标了 5813万
汗水浇灌收获,实干笃定前行。刚刚进入八月,鸿雁政企事业部就传来了特大喜讯——鸿雁中标浙江丽水国际会展中心电线电缆项目,中标总金额达5813万!一举刷新鸿雁单体项目中最高中标金额。 据了解,浙江丽水国际会展中心项…...

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业 tbms
功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查…...