Python正则表达式:match()和search()函数全面解读

更多资料获取
📚 个人网站:ipengtao.com
在Python中,正则表达式是强大的工具,能够用于文本匹配、搜索和替换。re模块提供了许多函数来处理正则表达式,其中match()和search()是两个常用的函数。本文将深入探讨这两个函数的用法、区别和示例,帮助你更好地理解它们的功能。
match()函数
match()函数尝试从字符串的起始位置匹配一个模式,如果在字符串的起始位置匹配到模式,就返回一个匹配对象;如果没有找到匹配,就返回None。
下面是一个简单的示例:
import repattern = r"hello"
text = "hello world"result = re.match(pattern, text)if result:print("Match found:", result.group())
else:print("No match")
在这个示例中,pattern是要匹配的模式,text是要搜索的文本。re.match()函数从文本的起始位置开始匹配模式"hello",如果成功匹配,则打印出匹配到的内容;否则输出"No match"。
search()函数
search()函数在整个字符串中搜索匹配模式,返回第一个匹配到的对象。与match()不同的是,search()并不要求模式从字符串的起始位置开始匹配。
以下是search()函数的示例代码:
import repattern = r"world"
text = "hello world"result = re.search(pattern, text)if result:print("Match found:", result.group())
else:print("No match")
在这个示例中,re.search()在文本中搜索模式"world",即使它不在字符串的起始位置,只要找到第一个匹配,就会返回匹配对象。
match()和search()的比较
match()和search()函数之间的主要区别在于它们匹配模式的位置要求。match()要求模式从字符串的起始位置开始匹配,而search()在整个字符串中搜索匹配。下面的例子将更清晰地展示两者之间的区别:
import repattern = r"hello"
text = "hi hello"result_match = re.match(pattern, text)
result_search = re.search(pattern, text)if result_match:print("match() found:", result_match.group())
else:print("match() found nothing")if result_search:print("search() found:", result_search.group())
else:print("search() found nothing")
在这个例子中,由于"hello"不是在字符串的起始位置,re.match()未能找到匹配,而re.search()找到了"hello",因此返回了匹配对象。
更多高级用法和技巧
除了简单的字符串匹配外,正则表达式还支持一系列高级功能,如使用元字符、捕获组、量词等。下面是一些更复杂的示例,展示了正则表达式的高级功能:
使用元字符
import repattern = r"\b\t[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b"
text = "Emails: test@example.com, another.email@gmail.com"emails = re.findall(pattern, text, flags=re.IGNORECASE)print("Found emails:", emails)
在这个示例中,re.findall()使用了一个更复杂的正则表达式模式来匹配电子邮件地址。
使用捕获组
import repattern = r"(\d{4})-(\d{2})-(\d{2})"
text = "Date: 2023-11-07"result = re.search(pattern, text)if result:print("Full match:", result.group(0))print("Year:", result.group(1))print("Month:", result.group(2))print("Day:", result.group(3))
这个例子展示了如何使用捕获组提取日期中的年、月和日。
总结
Python中的match()和search()函数是处理正则表达式的关键工具。match()从字符串起始位置开始匹配模式,而search()在整个字符串中搜索匹配。这两个函数提供了灵活的方法来处理文本数据,尤其在模式匹配和信息提取方面非常有用。
通过本文的示例代码,了解了它们的基本用法和区别。match()要求模式从字符串开头匹配,适合用于确定字符串是否以特定模式开头。相反,search()用于在字符串中查找模式的任何位置,更适合于发现字符串中的模式出现。
除了基础功能外,正则表达式还支持元字符、捕获组等高级功能,例如用于匹配复杂模式、提取特定信息等。这些功能使得正则表达式在处理文本时更加强大和灵活。
掌握match()和search()函数以及正则表达式的高级功能,可以更有效地处理文本数据,执行模式匹配、信息提取等任务。在实际应用中,需要注意正则表达式的复杂性和性能问题,避免过度复杂的模式和提高匹配效率。
总而言之,match()和search()是Python中强大的正则表达式函数,通过灵活运用它们,可以更好地处理文本数据,实现各种模式匹配和信息提取的需求。
Python学习路线

更多资料获取
📚 个人网站:ipengtao.com
如果还想要领取更多更丰富的资料,可以点击文章下方名片,回复【优质资料】,即可获取 全方位学习资料包。

点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。
相关文章:
Python正则表达式:match()和search()函数全面解读
更多资料获取 📚 个人网站:ipengtao.com 在Python中,正则表达式是强大的工具,能够用于文本匹配、搜索和替换。re模块提供了许多函数来处理正则表达式,其中match()和search()是两个常用的函数。本文将深入探讨这两个函…...
AIGC ChatGPT4总结Linux Shell命令集合
在Linux中,Shell命令的数量非常庞大,因为Linux提供了各种各样的命令来处理系统任务。这些命令包括GNU核心工具集、系统命令、shell内置命令以及通过安装获得的第三方应用程序命令。以下是一些常见的Linux命令分类及其示例,但请注意,这不是一个全面的列表,因为列出所有命令…...
力扣labuladong——一刷day61
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣865. 具有所有最深节点的最小子树二、力扣1123. 最深叶节点的最近公共祖先三、力扣1026. 节点与其祖先之间的最大差值四、力扣1120. 子树的最大平均值 …...
nacos配置变更导致logback日志异常
问题背景: 线上的服务突然内存爆满,查服务器突然发现,日志全部打印到了/tmp/tomcat.xxx.port目录下,后来对应操作时间,和nacos修改配置是同一时间发生的,但是疑惑的点是,nacos配置变更为什么会引起logback的…...
【spring(五)】SpringMvc总结 SSM整合流程
目录 一、SpringMVC简介: 二、SpringMVC快速入门: 三、SpringMVC bean的管理:⭐ ①配置bean ②扫描bean 四、SpringMVC配置类:⭐ 五、SpringMVC 请求与响应 六、SpringMVC REST风格 七、SSM整合 异常处理: 八、…...
1、windows10系统下Qt5.12.0与卸载
一、安装包下载 1、Qt社区下载 https://download.qt.io/archive/qt/5.12/5.12.10/qt-opensource-windows-x86-5.12.10.exe 2、百度网盘下载 链接:百度网盘 请输入提取码 3、Qt官网下载: Try Qt | 开发应用程序和嵌入式系统 | Qt 二、安装提示 下…...
WebGL/threeJS面试题扫描与总结
什么是 WebGL?什么是 Three.js?请解释three.js中的WebGL和Canvas的区别? WebGL(全写Web Graphics Library)是一种3D绘图协议,这种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个…...
Qt connect()方法Qt::ConnectionType
connect() Qt,绑定信号和槽原型: static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType Qt::AutoConnection);static QMetaObject::Connection conn…...
HIVE SQL时间函数
目录 current_timestamp()获取当前时间unix_timestamp()获取当前时区的UNIX时间戳from_unixtime()时间戳转日期函数unix_timestamp(string date)日期转时间戳函数提取日期中的年月日时分秒weekofyear (string date)日期转周函数日期比较函数datediff(string enddate, string st…...
linux磁盘的LVM、交换分区以及文件系统
目录 逻辑卷LVM LVM管理 LVM特点 LVM的制作 创建物理卷 创建卷组 创建逻辑卷 格式化文件系统 挂载逻辑卷 LVM的扩容 添加硬盘做物理卷 卷组扩容 扩容逻辑卷 给文件系统扩容 LVM移除 LVM的缩容 交换分区 查看当前交换分区:free Swap:虚…...
【HDFS】ActiveNamenodeResolver#getNamespaces 方法调用点梳理
获取所有的注册在router里的active状态的集群。 /*** Get a list of all namespaces that are registered and active in the* federation.** @return List of name spaces in the federation* @throws IOException Throws exception if the namespace list is not* av…...
算法—双指针
双指针算法可以帮忙把时间复杂度降低一个维度,即原本O(n2)降为O(n);将O(n)降为O(1) 移动零 移动零 题目解析 将所有0移动到末尾保持非0元素相对顺序对数组进行原地操作(不开辟额外空间) 算法原理 数组…...
[Oracle]编写程序,键盘输入n,计算1+前n项之和。测试案例:输入:10 输出:22.47
编写程序,键盘输入n,计算1前n项之和。 测试案例: 输入:10 输出:22.47 代码如下: set serveroutput on declare v_sum number:0;v_n number;beginv_n:&n;for i in 1..v_n loopv_sum:v_sumsqrt(i); end loop; d…...
【视觉SLAM十四讲学习笔记】第三讲——旋转向量和欧拉角
专栏系列文章如下: 【视觉SLAM十四讲学习笔记】第一讲——SLAM介绍 【视觉SLAM十四讲学习笔记】第二讲——初识SLAM 【视觉SLAM十四讲学习笔记】第三讲——旋转矩阵 本章将介绍视觉SLAM的基本问题之一:如何描述刚体在三维空间中的运动? 旋转向…...
【UGUI】制作用户注册UI界面
这里面主要的操作思想就是 1.打组 同一个事情里面包含两个UI元素都应该打组便于管理和查找 2.设置锚点位置 每次创建一个UI都应该设置他的锚点以便于跟随画布控制自己的:相对位置 3. 设置尺寸(像素大小) 每一次UI元素哪怕是作为父物体的…...
【UE】透视效果
效果 步骤 1. 新建一个空白工程 2. 添加一个第三人称游戏和初学者内容包到内容浏览器 3. 新建一个材质,这里命名为“M_Perspective” 打开“M_Perspective”,设置材质域为后期处理 添加三个“SceneTexture”节点,场景纹理ID选项分别设置为“…...
前端下载文件或者图片方式,window.open或者a标签形式
首先分别讲一下下载文件的方式都有哪些 1.通过a标签的方式下载文件 <a href"http://www.baidu.com" download"baidu.html">下载</a> 我们点击下载,发现是跳转到了百度的首页,并没有真的下载文件。 因为a标签下载只能…...
webpack配置scss loader
国内GPT站点:https://www.atalk-ai.com 在 Webpack 中配置 sass-loader 用于处理 .scss 文件通常涉及以下步骤: 安装必要的依赖: 你需要安装 sass-loader,以及 sass 本身(sass 是 node-sass 的替代品,更快且…...
k8s有状态部署mysql主从(local pv持久化)
1、修改自己对应的命名空间 2、local pv的方式必须先创建好目录在给权限 3、sts部署文件密码都要修改好在部署 yaml资源文件如下: #配置mysql的root密码再部署,如果部署了在修改root密码就会失败,必须在初始化就把root密码修改好 #部署采…...
下载并安装anaconda和VScode,配置虚拟环境,并使用VScode运行代码
文章目录 前言软件下载Anaconda下载VScode下载 软件安装Anaconda安装Vscod安装 配置虚拟环境并运行代码Anaconda创建环境VScode使用,运行代码1. 打开代码所在文件夹2. 选择解释器3. 运行代码 总结 前言 运行python代码,需要2个软件如下: Ana…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
从实验室到产业:IndexTTS 在六大核心场景的落地实践
一、内容创作:重构数字内容生产范式 在短视频创作领域,IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色,生成的 “各位吴彦祖们大家好” 语音相似度达 97%,单条视频播放量突破百万…...
Canal环境搭建并实现和ES数据同步
作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...
工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...
职坐标物联网全栈开发全流程解析
物联网全栈开发涵盖从物理设备到上层应用的完整技术链路,其核心流程可归纳为四大模块:感知层数据采集、网络层协议交互、平台层资源管理及应用层功能实现。每个模块的技术选型与实现方式直接影响系统性能与扩展性,例如传感器选型需平衡精度与…...
