python 之 正则表达式模块re
文章目录
- findall
- 例子:
- 特点和注意事项:
- match
- 示例:
- `match` 对象的方法和属性:
- 注意事项:
- search
- 示例:
- `match` 对象的方法和属性:
- 注意事项:
- split
- 示例:
- 参数说明:
- 注意事项:
- 示例说明:
- sub
- 示例:
- 参数说明:
- 可选参数:
- 示例说明:
正则表达式
(Regular Expression,简称为 regex 或 regexp)是用于在文本中匹配模式的特殊字符串表达式。Python 中的 re 模块是用来处理正则表达式的工具,它提供了一种灵活、强大的方式来搜索、替换和操作文本数据。
findall
re.findall()
是 Python re
模块中一个常用的函数,用于在字符串中查找所有与给定正则表达式模式匹配的内容,并返回一个包含所有匹配项的列表。它的基本语法如下:
re.findall(pattern, string)
pattern
是一个正则表达式,用来描述你想要匹配的模式。string
是你要搜索的目标字符串。
例子:
假设有一个文本包含多个 email 地址,我们想要提取出这些 email 地址:
import retext = "Email me at test@example.com or test2@example.com for more information."emails = re.findall(r'\S+@\S+', text)
print(emails)
\S+@\S+
是一个简单的正则表达式模式,它匹配一个非空白字符序列,然后是 @ 符号,再后面跟着另一个非空白字符序列。这个模式描述了基本的 email 地址格式。
re.findall()
返回一个列表,其中包含在 text
中找到的所有与模式匹配的 email 地址。
特点和注意事项:
- 返回列表:
re.findall()
返回所有匹配项组成的列表。 - 不返回匹配对象:与
re.search()
或re.match()
不同,findall()
不返回匹配对象,而是返回匹配的字符串本身。 - 模式中的分组:如果模式中有分组
( )
,re.findall()
会返回元组的列表,每个元组包含匹配到的分组内容。
import retext = "John has 3 cats, Jane has 2 dogs."
matches = re.findall(r'(\d+)\s(\w+)', text)
print(matches) # Output: [('3', 'cats'), ('2', 'dogs')]
这个例子中,正则表达式 (\d+)\s(\w+)
匹配了一些数字和接着的字母单词,并且使用了分组。re.findall()
返回了包含每个匹配组合的元组列表。
re.findall()
在处理文本、数据抽取、简单的文本匹配等任务中都非常有用,但要注意在处理复杂匹配模式时,可能需要更深入的了解和测试正则表达式。
match
re.match()
是 Python 中 re
模块的一个函数,用于在字符串的开头位置查找是否有符合给定正则表达式模式的内容。这个函数尝试从字符串的起始位置开始匹配模式,如果找到匹配,它将返回一个匹配对象;如果没有找到匹配,则返回 None
。
这是 re.match()
函数的基本语法:
re.match(pattern, string)
pattern
是一个正则表达式,用于描述你想要匹配的模式。string
是要搜索的目标字符串。
示例:
假设我们想要验证一个字符串是否以 “Hello” 开头:
import retext = "Hello, how are you?"
match = re.match(r'Hello', text)if match:print("Pattern found:", match.group())
else:print("Pattern not found.")
在这个例子中,re.match()
尝试从字符串的开头匹配模式 “Hello”。如果找到匹配,它会返回一个匹配对象,否则返回 None
。
match
对象的方法和属性:
group()
: 返回与整个匹配的字符串。start()
: 返回匹配的起始位置。end()
: 返回匹配的结束位置。span()
: 返回一个元组,包含匹配 (开始, 结束) 的位置。
import retext = "Hello, how are you?"
match = re.match(r'Hello', text)if match:print("Matched string:", match.group())print("Start position:", match.start())print("End position:", match.end())print("Position span:", match.span())
注意事项:
re.match()
只在字符串的开头位置进行匹配。如果你想要在整个字符串中查找匹配,可以使用re.search()
。- 如果匹配成功,
re.match()
返回的是一个匹配对象,你可以使用它的方法来获取匹配结果,如group()
、start()
等。 - 如果没有找到匹配,
re.match()
将返回None
。
re.match()
对于需要精确匹配字符串开头的情况非常有用,但如果你需要在字符串中间或结尾位置进行匹配,可以考虑使用 re.search()
函数。
search
re.search()
是 Python 中 re
模块的函数之一,用于在给定的字符串中搜索匹配指定正则表达式模式的内容。与 re.match()
不同,re.search()
不仅仅在字符串的开头进行匹配,而是搜索整个字符串,找到第一个匹配项后便停止搜索,并返回一个匹配对象。
这是 re.search()
函数的基本语法:
re.search(pattern, string)
pattern
是一个正则表达式,用于描述你想要匹配的模式。string
是要搜索的目标字符串。
示例:
假设我们想要在一个字符串中找到数字的位置:
import retext = "The price is $25.50."
match = re.search(r'\d+', text)if match:print("Pattern found:", match.group())print("Start position:", match.start())print("End position:", match.end())print("Position span:", match.span())
else:print("Pattern not found.")
在这个例子中,re.search()
在给定的字符串中搜索数字 \d+
的模式。如果找到匹配,它将返回一个匹配对象,否则返回 None
。
match
对象的方法和属性:
group()
: 返回与整个匹配的字符串。start()
: 返回匹配的起始位置。end()
: 返回匹配的结束位置。span()
: 返回一个元组,包含匹配 (开始, 结束) 的位置。
注意事项:
re.search()
会在整个字符串中查找第一个匹配项。如果需要查找所有匹配项,可以使用re.findall()
。- 如果找到匹配,
re.search()
返回的是一个匹配对象,你可以使用它的方法来获取匹配结果,如group()
、start()
等。 - 如果没有找到匹配,
re.search()
将返回None
。
re.search()
在需要在字符串中查找第一个匹配项时非常有用,尤其是当你不确定匹配项出现在字符串的什么位置时。
split
re.split()
是 Python re
模块中的一个函数,用于根据正则表达式模式分割字符串。它的作用类似于 str.split()
方法,但不是根据固定的字符分割字符串,而是根据给定的正则表达式模式进行分割。
这是 re.split()
函数的基本语法:
re.split(pattern, string)
pattern
是一个正则表达式,用于描述你想要作为分隔符的模式。string
是要分割的目标字符串。
示例:
假设我们有一个句子,想要根据空格和标点符号分割它:
import retext = "Hello, how are you?"
tokens = re.split(r'\W+', text)
print(tokens)
在这个例子中,re.split()
根据模式 \W+
(非字母数字下划线的字符)对文本进行分割。它返回一个由分割后的子字符串组成的列表。
参数说明:
pattern
定义了分隔符的模式。可以是单个字符,也可以是更复杂的正则表达式。string
是要分割的目标字符串。
注意事项:
- 如果模式中有括号,那么括号内的内容也会被包含在结果列表中。
- 如果模式中使用了捕获分组,那么分隔符也会包含在结果列表中。
re.split()
不会在最后的空字符串位置进行分割,因此不会返回末尾的空字符串。
示例说明:
import retext = "apple, orange, , banana, , mango"
tokens = re.split(r',\s*', text)
print(tokens)
这个例子中,模式 ,\\s*
匹配逗号后面的零个或多个空格。re.split()
根据这个模式分割字符串,并返回一个由分割后的子字符串组成的列表。结果列表中不包含末尾的空字符串。
re.split()
是一个很有用的函数,特别适用于需要根据复杂模式进行字符串分割的情况。
sub
re.sub()
是 Python 中 re
模块的一个函数,用于在字符串中查找与给定正则表达式模式匹配的内容,并将其替换为指定的字符串。它允许你执行在文本中查找并替换特定模式的操作。
这是 re.sub()
函数的基本语法:
re.sub(pattern, replacement, string)
pattern
是一个正则表达式,用于描述你想要匹配的模式。replacement
是要替换匹配内容的字符串。string
是要在其中进行替换操作的目标字符串。
示例:
假设我们想要在文本中替换所有数字为字符串 “NUMBER”:
import retext = "I have 2 apples and 3 oranges."
new_text = re.sub(r'\d+', 'NUMBER', text)
print(new_text)
在这个例子中,re.sub()
将查找文本中的所有数字,并用字符串 “NUMBER” 替换它们。
参数说明:
pattern
定义了要查找和替换的模式。这可以是简单的字符,也可以是更复杂的正则表达式。replacement
是要替换匹配内容的字符串。string
是要在其中进行替换操作的目标字符串。
可选参数:
re.sub()
函数还包含两个可选参数:
count
: 指定替换的最大次数。默认是 0,表示所有匹配都会被替换。flags
: 匹配模式。例如,re.IGNORECASE
可以用来进行不区分大小写的匹配。
示例说明:
import retext = "The color of the sky is blue."
new_text = re.sub(r'blue', 'red', text)
print(new_text)
在这个例子中,re.sub()
将找到文本中的 “blue” 并用 “red” 进行替换。
re.sub()
函数是处理文本替换非常有用的工具。它可以用于简单的字符串替换,也可以使用更复杂的正则表达式模式进行高级替换操作。
相关文章:

python 之 正则表达式模块re
文章目录 findall例子:特点和注意事项: match示例:match 对象的方法和属性:注意事项: search示例:match 对象的方法和属性:注意事项: split示例:参数说明:注意…...

vue项目npm install报错解决
一、报错信息 node-sass4.14.1 postinstall: node scripts/build.js 二、解决方式 (1)删除未成功安装的 node_modules 文件; (2)为 node-sass 单独设置镜像源; npm config set sass_binary_sitehttps:/…...

ubuntu挂载共享目录的方法
ubuntu挂载共享目录的方法 安装NFS配置NFS 安装NFS sudo apt-get install nfs-kernel-server配置NFS 创建work共享目录:(本人将此文件放在桌面)sudo mkdir worksudo gedit /etc/exports添加: /home/zynq/Desktop/work *(rw,sync,no_root_squash,no_subtree_check)运行以下命…...
累计概率分布、概率分布函数(概率质量函数、概率密度函数)、度量空间、负采样(Negative Sampling)
这里写自定义目录标题 机器学习的基础知识累计概率分布概率分布函数度量空间负采样(Negative Sampling)基于分布的负采样(Distribution-based Negative Sampling):基于近邻的负采样(Neighbor-based Negativ…...

〔001〕虚幻 UE5 安装教程
✨ 目录 🎈 下载启动程序🎈 注册个人账户🎈 选择引擎版本🎈 选择安装选项🎈 虚幻商城的使用🎈 每月免费插件🎈 安装插件🎈 下载启动程序 下载地址:https://www.unrealengine.com/zh-CN/download点击上面地址,下载 UE5 启动程序并安装🎈 注册个人账户 打开商…...

Crypto(8) BUUCTF-bbbbbbrsa1
题目描述: from base64 import b64encode as b32encode from gmpy2 import invert,gcd,iroot from Crypto.Util.number import * from binascii import a2b_hex,b2a_hex import randomflag "******************************"nbit 128p getPrime(nbit)…...

软件测试之随机测试详解
在软件测试中除了根据测试用例和测试说明书进行功能测试外,还需要进行随机测试,随机测试是没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试。主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行测试用例的重要…...

【广州华锐互动】3D全景虚拟旅游在文旅行业的应用场景
随着科技的不断发展,3D全景虚拟旅游正在成为一种新兴的旅游体验方式,它可以帮助旅游者更加深入地了解旅游信息,提升旅游体验。下面我们将详细介绍3D全景虚拟旅游可以应用于哪些场景。 一、旅游规划 3D全景虚拟旅游可以帮助旅游者更加直观地进…...

多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉 计算机竞赛
文章目录 0 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习多目标跟踪 …...

深入了解Jedis:Java操作Redis的常见类型数据存储
目录 前言 一、Jedis介绍 1.Jedis在各方面的功能 2.特点 二、Java连接Redis 1.导入pom依赖 2.建立连接 三、Java操作Redis的常见类型数据存储 1.字符串 2.哈希表 3.列表 4.集合 5.有序集合 四、Redis的实际应用场景实例 1.会议信息实体 2.自定义注解 3.创建切面…...

angular+ionic+npm项目运行
angularionicnpm项目运行 错误记录(1)Downloading binary from https://github.com/sass/node-sass/releases/download/v4.14.1/win32-x64-72_binding.node(2)The npm warning "A requires a peer of B but none is installe…...

【数据库】数据库模式 Schema
数据库模式 Schema 1.MySQL2.PostgreSQL3.SQL Server4.Oracle5.SQLite 在数据库的术语中,模式(schema)是一个逻辑概念,用于组织数据库中的对象。模式中的对象通常包括 表、索引、数据类型、序列、视图、存储过程、主键、外键 等等…...

RPC 原理详解
文章目录 什么是 RPCRPC 基本原理RPC核心功能服务寻址数据编解码网络传输一次RPC的调用过程 实践基于HTTP协议的RPC基于TCP协议的RPC 什么是 RPC RPC(Remote Procedure Call),即远程过程调用,它允许像调用本地服务一样调用远程服…...

新版Helix QAC 100%覆盖MISRA C++:2023
Helix QAC 2023.3预期将100%覆盖在2023年第四季度发布的新的MISRA C:2023规则。 此外,该版本支持更多的C20语言特性,并改进了Perforce Validate平台和Helix QAC与Validate的集成,以及其他质量改进。 编码标准覆盖率(MISRA C:202…...

maven 项目添加 git-hook 脚本,约束提交内容格式
git 提交代码,推送代码,可以通过在 .git/hooks 目录中的 bash 脚本来做一定的验证工作。 本例使用插件 maven-antrun-plugin 自动输出脚本至 .git/hooks 目录中,在 pom.xml 中的使用示例如下: <plugin><groupId>org.…...

18、Flink的SQL 支持的操作和语法
Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...

泛微OA_lang2sql 任意文件上传漏洞复现
简介 泛微OA E-mobile系统 lang2sql接口存在任意文件上传漏洞,由于后端源码中没有对文件没有校验,导致任意文件上传。攻击者可利用该参数构造恶意数据包进行上传漏洞攻击。 漏洞复现 FOFA语法: title"移动管理平台-企业管理" 页…...

Rust编程基础核心之所有权(上)
1.什么是所有权? Rust 的核心功能(之一)是 所有权(ownership)。虽然该功能很容易解释,但它对语言的其他部分有着深刻的影响。 所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制&#x…...

优化改进YOLOv5算法之添加DCNv3模块,有效提升目标检测效果
目录 前言 1 DCNv3原理 1.1 DCNv2 1.2 DCNv3 1.3 模型架构 2 YOLOv5算法中加入DCNv3模块...

VSCode 连接不上 debian 的问题
之前一台笔记本上安装了 debian12,当时用 vscode 是可以连接上的,但今天连接突然就失败了,失败信息是这样的: 查看失败信息 因为 debian 是自动获取 ip 地址的,以前能连接上时,ip 地址是 104,然…...

【ElasticSearch系列-06】Es集群架构的搭建以及集群的核心概念
ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…...

软考高级系统架构设计师系列案例考点专题六:面向服务架构设计
软考高级系统架构设计师系列案例考点专题六:面向服务架构设计 一、面向服务架构设计内容大纲二、SOA概述和发展三、SOA和微服务的区别四、SOA的参考架构五、SOA主要协议和规范六、SOA设计标准和原则七、SOA设计模式八、SOA构建和实施一、面向服务架构设计内容大纲 SOA概述和发…...

【入门Flink】- 07Flink DataStream API【万字篇】
DataStream API 是 Flink 的核心层 API。一个 Flink 程序,其实就是对DataStream的各种转换。 代码基本上都由以下几部分构成: 执行环境(Execution Environment) 1)创建执行环境StreamExecutionEnvironment StreamExe…...

AI:55-基于深度学习的人流量检测
🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…...

node版本管理工具nvm
node版本管理工具nvm 要在本地拥有多个 Node.js 版本,并根据不同的环境切换不同的 Node.js 版本,你可以使用工具如 nvm(Node Version Manager)来管理和切换 Node.js 版本。 以下是关于如何使用这两个工具的简要说明:…...

stable-diffusion-webui安装Wav2Lip
常见错误 1.错误:Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check 修改代码: launch_utils.py 删除三个地方:...

Nacos-2.2.2源码修改集成高斯数据库GaussDB,postresql
一 ,下载代码 Release 2.2.2 (Apr 11, 2023) alibaba/nacos GitHub 二, 执行打包 mvn -Prelease-nacos -Dmaven.test.skiptrue -Drat.skiptrue clean install -U 或 mvn -Prelease-nacos ‘-Dmaven.test.skiptrue’ ‘-Drat.skiptrue’ clean instal…...

Linux 内核中根据文件inode号获取其对应的struct inode
文章目录 前言一、简介二、iget_locked2.1 简介2.2 内核中使用2.3 LKM demo 三、ext4_iget3.1 简介3.2 LKM demo 前言 文件inode号和struct inode结构体请参考: Linux文件路径,目录项,inode号关联 Linux文件系统 struct inode 结构体解析 一…...

Pycharm-community-2021版安装和配置
一、下载Pycharm-community-2021 1.从官网下载pycharm-community Pycharm 版本官网 二、安装PyCharm 1.打开下载完成的安装包,点击Next 2.安装PyCharm到其他位置,点击Next 3.一定把更新PATH变量勾上,可以创建桌面快捷方式,创建关联,最后…...

飞书开发学习笔记(一)-应用创建和测试
飞书开发学习笔记(一)-应用创建和测试 一.前言 现在大企业用的办公IM软件中,飞书是口碑最好的,不得不说,字节在开发产品方面,确实有自己独到的竞争力,比如说抖音、头条、飞书。在办公会议和云文档的体验上,其它的办公…...