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蛇群算法优化卷积门控循…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
