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,然…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...

PH热榜 | 2025-06-08
1. Thiings 标语:一套超过1900个免费AI生成的3D图标集合 介绍:Thiings是一个不断扩展的免费AI生成3D图标库,目前已有超过1900个图标。你可以按照主题浏览,生成自己的图标,或者下载整个图标集。所有图标都可以在个人或…...

【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...
在Spring Boot中集成RabbitMQ的完整指南
前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...
AIGC 基础篇 Python基础 02
1.bool类型 书接上回,我们上次最后讲了三大数据类型,除了这三个之外,Python也有bool类型,也就是True和False。 a 2 print(a1) print(a2) 像这里,输出的内容第一个是False,因为a的值为2,而第…...