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…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...

Linux基础开发工具——vim工具
文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...
GeoServer发布PostgreSQL图层后WFS查询无主键字段
在使用 GeoServer(版本 2.22.2) 发布 PostgreSQL(PostGIS)中的表为地图服务时,常常会遇到一个小问题: WFS 查询中,主键字段(如 id)莫名其妙地消失了! 即使你在…...
接口 RESTful 中的超媒体:REST 架构的灵魂驱动
在 RESTful 架构中,** 超媒体(Hypermedia)** 是一个核心概念,它体现了 REST 的 “表述性状态转移(Representational State Transfer)” 的本质,也是区分 “真 RESTful API” 与 “伪 RESTful AP…...
java+webstock
maven依赖 <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.3.5</version></dependency><dependency><groupId>org.apache.tomcat.websocket</groupId&…...