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…...
终极指南:如何轻松提取Xbox Game Pass游戏存档,实现跨平台无缝迁移
终极指南:如何轻松提取Xbox Game Pass游戏存档,实现跨平台无缝迁移 【免费下载链接】XGP-save-extractor Python script to extract savefiles out of Xbox Game Pass for PC games 项目地址: https://gitcode.com/gh_mirrors/xg/XGP-save-extractor …...
企业级管理系统快速入门:RuoYi-Vue-Plus 3天从零到部署实战
企业级管理系统快速入门:RuoYi-Vue-Plus 3天从零到部署实战 【免费下载链接】RuoYi-Vue-Plus 基于RuoYi-Vue集成 LombokMybatis-PlusUndertowknife4jHutoolFeign 重写所有原生业务 定期与RuoYi-Vue同步 项目地址: https://gitcode.com/GitHub_Trending/ru/RuoYi-V…...
三步快速配置:极简二维码插件让你的浏览器变身智能跨设备助手
三步快速配置:极简二维码插件让你的浏览器变身智能跨设备助手 【免费下载链接】chrome-qrcode chrome-qrcode - 一个 Chrome 浏览器插件,可以生成当前 URL 或选中文本的二维码,或解码网页上的二维码。 项目地址: https://gitcode.com/gh_mi…...
利用快马平台十分钟搭建reframework机器人流程自动化原型
利用快马平台十分钟搭建reframework机器人流程自动化原型 最近工作中需要快速验证一个机器人流程自动化(RPA)的想法,但搭建完整开发环境太费时间。尝试了InsCode(快马)平台后,发现它简直是快速原型开发的利器。下面分享我是如何在…...
AI 写作 + 去 AI 味:自媒体人高效涨粉密码
AI 写作 去 AI 味,自媒体人高效涨粉的新组合拳副标题,内容洪流时代,创作者如何同时兼顾效率、风格与平台合规?凌晨两点,北京东四环的一间合租公寓里,一位运营着 3 个帐号的图文博主,一边看着后…...
Dankoe新作《使命与收益》读书笔记10|自我变现:如何将自我发展转化为值得付费的价值
大多数创业者的剧本都写好了:找个“有前景”的利基市场,学技能、做调研、磨产品,最后硬着头皮销售。 听起来很合理,对吧?(利基市场 Niche的音译大企业看不上、懒得做、吃不下的小众细分市场) …...
Cyber Engine Tweaks:解锁《赛博朋克2077》终极自定义体验的3个关键维度
Cyber Engine Tweaks:解锁《赛博朋克2077》终极自定义体验的3个关键维度 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks Cyber Engine Tweaks&a…...
思科故障排查命令 TOP50
在网络运维这行干久了,你会发现一个很现实的事情:90% 的故障,其实靠“几条命令”就能定位. 但问题是——很多人不是不会,而是: 想不起来用哪个命令 不知道该从哪一步查 查了但不会“看输出” 所以这篇文章,我不单是给你列命令,而是帮你建立一个: 👉 “排查思路 + 命…...
深圳SEO公司为什么要定期优化网站
深圳SEO公司为什么要定期优化网站 在当今数字化时代,拥有一个优秀的网站已经不再足以满足企业的需求。随着互联网市场的竞争日益激烈,深圳SEO公司认识到定期优化网站的重要性,并将其作为持续提升网站流量和业务发展的核心策略之一。为什么深…...
Jetson Orin Nano系统降级实战:从Ubuntu 22.04回退至20.04的避坑指南
1. 为什么需要从Ubuntu 22.04降级到20.04? 最近很多使用Jetson Orin Nano开发板的开发者都遇到了一个棘手的问题:Ubuntu 22.04的软件生态兼容性。我自己在实际项目中就踩过这个坑,当时为了追求新版本的系统性能,直接安装了Ubuntu …...
