Python正则表达式:贪婪匹配与非贪婪匹配(问号)

发布时间:2026/9/24 17:12:07

Python正则表达式:贪婪匹配与非贪婪匹配(问号) Python正则表达式贪婪匹配与非贪婪匹配问号本章学习目标深入理解贪婪匹配与非贪婪匹配问号的核心概念与实践方法掌握关键技术要点了解实际应用场景与最佳实践。本文属于《Python从入门到精通教程》Python正则表达式篇第九篇。在上一章我们学习了Python正则表达式分组小括号与反向引用。本章我们将深入探讨贪婪匹配与非贪婪匹配问号这是Python学习中非常重要的一环。一、核心概念与背景1.1 什么是贪婪匹配与非贪婪匹配问号基本定义贪婪匹配与非贪婪匹配问号是Python编程中的核心知识点之一。掌握这项技能对于提升编程效率和应用效果至关重要。# Python示例代码# 本节演示贪婪匹配与非贪婪匹配问号的基本用法# 示例1基础用法print(Hello, Python!)# 输出Hello, Python!# 示例2变量定义namePython学习者age25score95.5print(f姓名:{name})print(f年龄:{age})print(f分数:{score})1.2 为什么贪婪匹配与非贪婪匹配问号如此重要⚠️重要性分析在实际开发过程中贪婪匹配与非贪婪匹配问号的重要性体现在以下几个方面开发效率提升掌握这项技能可以显著减少开发时间代码质量保障帮助开发者写出更规范、更高效的代码问题解决能力遇到相关问题时能够快速定位和解决职业发展助力这是从新手到高手的必经之路1.3 应用场景典型应用场景场景类型具体应用技术要点数据处理数据清洗与转换效率优化、异常处理自动化任务定时执行重复性工作任务调度、日志记录Web开发后端服务开发框架使用、API设计数据分析数据可视化与分析统计计算、图表绘制二、技术原理详解2.1 核心原理技术架构Python的核心设计理念包含以下几个关键特点┌─────────────────────────────────────────────────────────┐ │ Python核心特点 │ ├─────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 简洁易读 │ │ 面向对象 │ │ 跨平台 │ │ │ │ (Readable) │ │ (OOP) │ │ (Cross) │ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ ↑ ↓ │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 丰富的标准库和第三方库 │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘2.2 实现方法classPythonDemo:Python演示类def__init__(self,name): 初始化方法 Args: name: 名称 self.namename self.data[]defadd_data(self,item):添加数据self.data.append(item)returnselfdefprocess(self):处理数据return[item*2foriteminself.data]defshow(self):显示结果print(f{self.name}的数据:{self.data})print(f处理结果:{self.process()})# 使用示例demoPythonDemo(测试)demo.add_data(1).add_data(2).add_data(3)demo.show()2.3 关键技术点技术点说明重要性语法简洁Python语法清晰易读⭐⭐⭐⭐⭐动态类型变量无需声明类型⭐⭐⭐⭐内存管理自动垃圾回收⭐⭐⭐⭐⭐丰富的库大量第三方库支持⭐⭐⭐⭐三、实践应用3.1 环境准备① 安装Python# Windows: 从官网下载安装包# https://www.python.org/downloads/# macOS: 使用Homebrewbrewinstallpython3# Linux (Ubuntu/Debian):sudoaptupdatesudoaptinstallpython3# 验证安装python--version# 或python3--version② 配置开发环境# 检查Python版本importsysprint(fPython版本:{sys.version})# 检查已安装的包importpip installed_packagespip.get_installed_distributions()print(f已安装的包数量:{len(installed_packages)})3.2 基础示例示例一Hello World# 第一个Python程序print(Hello, World!)print(你好Python)# 使用变量message欢迎学习Pythonprint(message)# 格式化输出name张三age25print(f姓名:{name}, 年龄:{age})示例二数据处理# 列表操作numbers[1,2,3,4,5]# 添加元素numbers.append(6)print(f添加后:{numbers})# 列表推导式squares[x**2forxinnumbers]print(f平方后:{squares})# 过滤even_numbers[xforxinnumbersifx%20]print(f偶数:{even_numbers})3.3 进阶示例# 面向对象编程示例classStudent:学生类# 类属性schoolPython大学def__init__(self,name,age):初始化方法self.namename self.ageage self.grades[]defadd_grade(self,grade):添加成绩self.grades.append(grade)defget_average(self):计算平均分ifnotself.grades:return0returnsum(self.grades)/len(self.grades)def__str__(self):字符串表示returnf学生:{self.name}, 年龄:{self.age}, 平均分:{self.get_average():.2f}# 使用示例studentStudent(李四,20)student.add_grade(85)student.add_grade(90)student.add_grade(88)print(student)四、常见问题与解决方案4.1 环境配置问题⚠️问题一Python安装失败现象python 不是内部或外部命令解决方案# Windows: 添加Python到环境变量# 1. 右键此电脑 - 属性 - 高级系统设置# 2. 环境变量 - 系统变量 - Path# 3. 添加Python安装路径# 或重新安装时勾选 Add Python to PATH⚠️问题二pip安装包失败现象ERROR: Could not find a version that satisfies the requirement解决方案# 使用国内镜像pipinstall包名-ihttps://pypi.tuna.tsinghua.edu.cn/simple# 永久设置镜像pip configsetglobal.index-url https://pypi.tuna.tsinghua.edu.cn/simple4.2 运行时问题⚠️问题三编码错误现象UnicodeDecodeError: gbk codec cant decode byte解决方案# 指定编码withopen(file.txt,r,encodingutf-8)asf:contentf.read()# 或使用errors参数withopen(file.txt,r,encodingutf-8,errorsignore)asf:contentf.read()⚠️问题四模块导入失败现象ModuleNotFoundError: No module named xxx解决方案# 检查模块是否安装importsysprint(sys.path)# 查看模块搜索路径# 安装缺失的模块# pip install 模块名五、最佳实践5.1 代码规范✅推荐做法# 1. 使用有意义的变量名student_name张三# ✅ 好a张三# ❌ 不好# 2. 添加文档字符串defcalculate_average(numbers): 计算列表中数字的平均值 Args: numbers: 数字列表 Returns: 平均值 returnsum(numbers)/len(numbers)# 3. 使用类型注解Python 3.5defgreet(name:str)-str:returnf你好,{name}!# 4. 异常处理try:result10/0exceptZeroDivisionErrorase:print(f错误:{e})5.2 性能优化技巧技巧说明效果列表推导式替代for循环创建列表提升2倍速度使用内置函数sum/max/min等提升3倍速度避免全局变量使用局部变量提升10%速度使用生成器处理大数据减少90%内存5.3 安全注意事项⚠️安全检查清单不在代码中硬编码密码使用环境变量存储敏感信息对用户输入进行验证使用参数化查询防止SQL注入定期更新依赖包六、本章小结6.1 核心要点回顾✅要点一理解贪婪匹配与非贪婪匹配问号的核心概念和原理✅要点二掌握基本的实现方法和代码示例✅要点三了解常见问题及解决方案✅要点四学会最佳实践和性能优化技巧6.2 实践建议学习阶段建议内容时间安排入门完成所有基础示例1-2天进阶独立完成一个小项目3-5天高级优化性能处理复杂场景1-2周6.3 与下一章的衔接本章我们学习了贪婪匹配与非贪婪匹配问号。在下一章我们将探讨Python正则表达式标志位re.I/re.S/re.M等进一步深入理解Python的技术体系。七、延伸阅读7.1 相关文档官方资源Python官方文档https://docs.python.org/zh-cn/3/Python教程https://docs.python.org/zh-cn/3/tutorial/Python标准库https://docs.python.org/zh-cn/3/library/7.2 推荐学习路径入门阶段第1-40章 ↓ 进阶阶段第41-100章 ↓ 实战阶段第101-150章 ↓ 高级阶段第151-200章7.3 练习题思考题贪婪匹配与非贪婪匹配问号的核心原理是什么如何在实际项目中应用本章所学内容有哪些常见的错误需要避免如何进一步优化性能与其他编程语言相比Python有什么独特优势小贴士学习编程最好的方式是动手实践。建议读者在阅读本章的同时打开编辑器跟着敲代码遇到问题多思考、多尝试。本章完在下一章我们将探讨Python正则表达式标志位re.I/re.S/re.M等继续深入Python的技术世界。
延伸阅读

更多相关文章

2026/9/20 2:44:23

约束型提示词:用限制条件框定AI输出边界

约束型提示词:用限制条件框定AI输出边界想象你在教一个聪明但缺乏边界感的新同事做事。你跟他说"写一份产品分析报告",他交上来一份30页的文档——从石器时代讲到量子计算,引经据典、文采斐然,但就是没回答你最关心的三…

2026/9/24 15:53:21

Spring Boot集成Druid连接池配置失效排查与解决方案

1. 项目概述:当Druid遇上Spring Boot的“静默”失效 搞Java后端开发,尤其是用Spring Boot做Web应用,数据库连接池几乎是标配。Druid,作为阿里开源的一款功能强大的数据库连接池和监控组件,以其出色的监控能力、防SQL注…

2026/9/24 17:11:39

电碳表与碳资产管理平台:双碳目标下的智慧能源管理新范式

摘要:电碳表依托智能计量与物联网技术,实现用电全流程碳排放动态精准测算,为碳排放核算提供实时、可信的数据支撑;碳资产管理平台则以精准碳核算为基础,对接碳交易市场,助力企业盘活碳资产、创造碳收益。二…

2026/9/24 17:11:39

HT7183(3A开关、16V输出DC-DC升压IC) 聚能芯半导体一级代理

概述HT7183作为一款高功率异步升压转换器,集成了低阻值达120mΩ的功率开关管,为便携式系统量身打造了高效且紧凑的解决方案。该转换器的输入电压范围覆盖2.6V至5.5V,能够为各类采用不同供电方式的应用提供有力支持。HT7183具备卓越的性能&…

2026/9/24 17:11:39

OC7141|PWM 调光的线性降压 LED 恒流驱动器 聚能芯半导体一级代理

概述OC7141是一种带PWM调光功能的线性降压LED恒流驱动器,仅需外接一个电阻和一个NMOS管就可以构成一个完整的LED恒流驱动电路,调节该外接电阻就可以调节输出电流,输出电流可调范围为10mA到3000mA。OC7141内置过热保护功能,可有效保…

2026/9/24 17:11:39

旅游MCP服务器全图谱:谁在入局、谁缺席、谁的壁垒最厚

旅游MCP生态已进入商业化深水区。截至2026年7月,已有76个以上的社区和官方MCP服务器覆盖旅游服务,垂直商业化程度领先于绝大多数行业。但生态结构严重失衡——头部玩家已跑通"搜索-预订-变现"完整闭环,而Booking.com、Google Fligh…

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/24 0:00:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:21

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:21

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码