Python正则表达式完全指南

【R语言实例】物种分布模型介绍 SDM介绍 阅读详情

本篇文章将深入探讨python的一项强大工具:正则表达式。正则表达式是一个强大的文本处理工具,可以用来匹配,搜索,替换和解析文本。我们将逐步展示如何在Python中使用正则表达式,包括其基本语法,常见用法和一些高级技巧。而在最后的“one more thing”部分,我们将探索一个不为人知但又非常有用的正则表达式的技巧。

简单正则表达式匹配

在Python中,re模块提供了正则表达式的支持。我们先从最简单的字符匹配开始。

import re

# 检查字符串是否包含字母"a"
txt = "Hello, world!"
match = re.search("a", txt)
print(match)  # 输出:None,因为"a"没有在字符串中

在这个例子中,我们使用了re.search()函数来查找字符串中是否包含"a"。这是最基础的字符匹配,但已经可以看出正则表达式的用处。例如,你可以用这种方式检查一个电子邮件地址是否包含"@"。

使用元字符

正则表达式的真正威力在于其元字符的使用,比如.,*,?,[]等等。下面的例子展示了如何使用.(点)元字符匹配任何字符(除了新行)。

txt = "Hello, world!"
match = re.search("H.llo", txt)
print(match.group())  # 输出:Hello

在这个例子中,.字符匹配了"e",使得"H.llo"可以匹配"Hello"。

使用预定义的字符集

有时我们希望匹配的是一类字符,而不是单个字符。比如,我们可能想要匹配任何数字。Python的正则表达式提供了预定义的字符集来实现这种功能。\d就代表任何数字。

txt = "123 Hello, world!"
match = re.search("\d+", txt)
print(match.group())  # 输出:123

在这个例子中,\d+匹配了一串数字"123"。

分组和捕获

我们可以使用圆括号()创建子模式或组,并使用group()方法来捕获这些组。

txt = "123 Hello, world!"
match = re.search("(\d+) (Hello),", txt)
print(match.group(1))  # 输出:123
print(match.group(2))  # 输出:Hello

使用正向先行断言

这是一个高级技巧,它允许我们在不消耗字符的情况下进行匹配。例如,我们可能想找出所有以句号结束但不包含句号的句子。

txt = "Hello. My name is Python. Nice to meet you."
matches = re.findall(".*?(?=\\.)", txt)
for match in matches:
    print(match)  # 输出:Hello,My name is Python,Nice to meet you

在这个例子中,.*?(?=\\.)匹配了所有以句号结束的句子,但并没有消耗句号。

字符集和范围

我们之前讨论过预定义的字符集,比如\d。但有时我们可能需要自定义字符集,我们可以使用方括号[]来达成这个目标。例如,我们可以创建一个只包含小写字母的字符集。

txt = "Hello, World!"
match = re.search("[a-z]+", txt)
print(match.group())  # 输出:ello

在这个例子中,[a-z]+匹配了一串连续的小写字母"ello"。注意"Hello"的首字母"H"由于是大写,没有被匹配。

贪婪匹配和非贪婪匹配

Python的正则表达式默认是贪婪的,这意味着它们会尽可能匹配更多的字符。但有时我们可能希望进行非贪婪匹配。我们可以通过在量词后面添加问号?来实现这个功能。

txt = "12345"
match = re.search("\d+?", txt)
print(match.group())  # 输出:1

在这个例子中,\d+?进行了非贪婪匹配,只匹配了一个数字"1"。

零宽断言

零宽断言允许我们在字符之间设置条件。比如,我们可以使用(?<=a)b来匹配所有在"a"后面的"b"。

txt = "cab, dab"
matches = re.findall("(?<=a)b", txt)
for match in matches:
    print(match)  # 输出:b,b

在这个例子中,(?<=a)b匹配了所有在"a"后面的"b"。

使用编译的正则表达式

如果你的程序需要多次使用同一个正则表达式,你可以将其编译为一个正则表达式对象。这可以提高代码的运行效率。

pattern = re.compile("\d+")
txt = "123 Hello, world!"
match = pattern.search(txt)
print(match.group())  # 输出:123

在这个例子中,我们先编译了正则表达式\d+,然后使用pattern.search()方法来进行匹配。

One More Thing

到现在为止,我们已经探讨了Python正则表达式的基础知识。但是在这最后的"One More Thing"部分,我想分享一个不常被提及,但在处理复杂文本模式时非常有用的技巧:命名组。

命名组允许我们给匹配的组分配一个名字,然后在后面的代码中引用它。这在处理复杂的模式匹配时非常有用。

txt = "James: 1234567890"
match = re.search("(?P<name>\w+): (?P<phone>\d+)", txt)
print(match.group('name'))  # 输出:James
print(match.group('phone'))  # 输出:1234567890

在这个例子中,我们使用了命名组(?P<name>\w+)和(?P<phone>\d+)来匹配名字和电话号码,并使用group()方法来获取它们。

正则表达式是一个非常强大的工具,希望本篇文章能帮你掌握它在Python中的用法。

---------------------------END---------------------------

题外话

当下这个大数据时代不掌握一门编程语言怎么跟的上时代呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

直击高频编程考点:字符串知识及经典算法题总结 字符串相关基本练习题总结(最长公共子串、最长回文子串、最长无重复字符子串、最小覆盖子串、字符串相乘、中文数字表达转实际数字格式等) 阅读详情

相关推荐

Mac版Burp Suite专业版破解与汉化完整指南

在Web安全测试领域,Java应用程序的许可证验证机制与本地化实现是常见的技术课题。其原理通常涉及Java Agent技术,通过在JVM启动时动态修改字节码,实现对软件授权状态的校验逻辑进行拦截与重写,从而绕过官方验证。同时,软件界面的国际化(i18n)与本地化(l10n)则依赖于资源文件的替换与加载。从技术价值角度看,深入理解这些机制不仅能满足特定场景下的工具定制需求,更能加深对Java安全机制、软件保护与逆向工程的理解。在实际的工程实践中,安全研究人员与开发者常面临功能受限或语言障碍的挑战,尤其是在渗透

weixin_29327525的博客 1059

Python中的正则表达式完全指南

在本文中,我们详细探讨了 Python 中正则表达式的基础和高级用法,从简单的匹配、查找、替换到断言、优化技巧及多行匹配等多个方面进行了深入讲解。正则表达式是一个强大的文本处理工具,掌握它的使用能够显著提高工作效率。希望这篇完整的指南能够帮助你更好地理解和应用正则表达式,提升你在 Python 中处理文本的能力。

一键难忘的博客 4561

磁带库Scalar i6000界面基本操作步骤

(注:磁带库的前面的门不要打开,日常维护:主要就是简单看下磁带库的状态;绿色代表正常;黄色代表报警但不影响磁带库正常使用;红色代表报警,不能正常使用,及时和厂家联系报修。) 一、磁带库管理页面 1、首先,磁带库前面(具体作用如图) 2、查看状态和管理页面 3、管理页面登陆。用户名:service 密码:xxxxxx 4、磁带机背面 二、电脑连接磁带库进入管理页面 1.用网线把电脑和磁带库的维护接口(磁带库背面)进行连接 2.电脑环境:JAVA。把电脑的IP设置成自...

杀神lwz的博客 5359

Python 正则表达式完全指南

.*

大白菜代码的博客 1386

最新版 Akamai 逆向 风控破解

经过测试,捷星 jetstar.com,德州仪器 ti.com,w6 wizzair.com,还有一些航空公司的都是可以实现一个并发的有需要的可以。

m0_72605044的博客 6627

AI搜索优化(GEO)实战指南:抢占智能对话流量入口

AI SEO,是针对生成式AI平台(如DeepSeek、豆包、Kimi等)的优化策略,旨在通过适配AI算法对内容的理解和引用逻辑,提升品牌在AI生成答案中的可见性与权威性,从而在对话式搜索场景中抢占流量入口。:强化内容经验性(Experience)、专业性(Expertise)、权威性(Authoritativeness)、可信度(Trustworthiness)内容需避免夸大描述,提供可验证的细节(如数据、用户评价)。

Baixue5209的博客 6791

Python正则表达式完全指南:从入门到精通

正则表达式(Regular Expression)是用于匹配和处理文本的强大工具,通过特定语法规则实现:文本搜索与匹配数据验证(邮箱、电话等)文本替换与清洗复杂模式提取文本分割Python通过内置的re模块提供正则支持,我们先导入模块:python复制import re。

m0_73581472的博客 1181

【Qt笔记】1.VSCode搭建Qt运行环境

Qt6之后已经抛弃qmake,使用cmake。cmake相对qmake来说只有优点没有缺点。使用VSCode搭建完Qt的运行环境就能开开心心debug了.vscode需要使用的插件:2.Qt tools3.CMakec++插件可以不关注,缺啥都会提醒你.正常安装即可。

没有手牌的博客 2万+

Python 正则表达式完全指南:从入门到实战

先用自然语言描述模式,再翻译成正则。 任何复杂正则都必须有自动化测试。

Y234567890_的博客 1592

游戏“中台”的故事——架构演进、团队协同与产品创新的深度剖析

什么是中台?在游戏行业里,中台并不是把所有技术都归口管理、统一“圈养”。更不是简单的工具集合。它代表的,是一种“模块化底座”——把业务的通用能力、基础支撑和数据结合,变成可复用、可扩展、可创新的技术体系。让“前台”专注于创新玩法、极致体验;让“后台”稳健保障数据、安全、性能;让“中台”统合各种资源、流程、工具,形成平台型生产力。游戏中台是团队协同、技术创新、业务增长并行的产物。它让开发从重复劳动解脱,带着创新冲锋;让运营靠数据说话,精准制胜;让产品实现高效迭代,生态爆发。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1950

scratch绘制四个三角形 2024年6月中国电子学会 图形化编程 scratch编程等级考试二级真题和答案解析

​ scratch绘制四个三角形 一、题目要求 2024年6月电子学会图形化编程Scratch等级考试二级真题 1、准备工作 1.保留默认角色小猫; 2.添加背景Stars。 2、功能实现 1 .隐藏角色小猫,设置画笔裙始位置为(0,0),画笔颜色为黄色,画笔的粗细为5; 2. 点击绿旗,绘制如下图所示图形,三角形的边长为50。 二、案例分析 1、角色分析 角色:小猫 2、背景分析 背景:Stars背景 3、前期准备 1. 保留默认的小猫不变 ​

青少年编程学习指导 1719

Python正则表达式完全指南:从入门到实战

模块提供正则支持,与其他编程语言(如Java、JavaScript)的语法高度兼容。:尝试用正则表达式处理您的实际项目数据(如爬虫结果、日志文件)!默认量词是贪婪的(匹配尽可能长的字符串),添加。数据清洗(如日志分析、爬虫数据提取)字符串复杂操作(如批量替换特定模式)《精通正则表达式》(Friedl著)表单验证(邮箱、手机号格式校验)基础语法(元字符、量词、分组)实战应用(验证、提取、清洗):贪婪量词导致意外结果(如。Python通过内置的。匹配到字符串末尾)。

m0_70829222的博客 406

【AutoSAR】【EcuM】ECU状态管理

目录 一、EcuM架构位置 ​二、EcuM功能介绍 三、EcuM状态机 1.STARTUP阶段 2、UP状态 3、shutdown状态 4、休眠状态 5、OFF状态 一、EcuM架构位置 EcuM模块位于系统服务层,如下图红色方框里; 二、EcuM功能介绍 EcuM本身它管理着ECU在STARTUP, RUN,OFF,SLEEP,WAKEUP状态之间的相互切换。 责所有BSW的初始化以及去初始化 和ComM协作来管理网络状态,在需要时关闭ECU 管理所有的唤醒事件,并且在需要时

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 3355

python正则表达式指南_Python正则表达式完全指南

正则表达式处理文本有如疾风扫秋叶,绝大部分编程语言都内置支持正则表达式,它应用在诸如表单验证、文本提取、替换等场景。爬虫系统更是离不开正则表达式,用好正则表达式往往能收到事半功倍的效果。介绍正则表达式前,先来看一个问题,下面这段文本来自豆瓣的某个网页链接,我对内容进行了缩减。问:如何提取文本中所有邮箱地址呢?html = """.qrcode-app{display: block;backgrou...

weixin_39843738的博客 245

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Python 正则表达式完全指南:从基础语法到实战案例

本文系统介绍了正则表达式在Python中的应用,主要内容包括:1. 基础语法:详细讲解精确匹配、模糊匹配、量词、限定符、分组、断言等核心概念,并通过密码强度验证案例展示复杂模式匹配;2. Python re模块:解析match、fullmatch、findall、search、sub/subn等核心方法的用法与区别;3. 实战应用:演示表单验证场景中手机号、邮箱、任务名的正则验证实现;4. 注意事项:强调转义字符处理、匹配模式选择及性能优化技巧。全文通过理论结合实例的方式,帮助读者掌握正则表达式在文本处理中

qwerty12ljhxjdj的博客 1866

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python正则表达式完全指南 - MorvanZhou教程解析

在日常编程工作中,你是否经常遇到这样的场景: - 需要从大量文本中提取特定格式的信息(如邮箱、电话号码、URL等) - 要对用户输入进行复杂的格式验证 - 需要批量替换文本中的特定模式 - 处理日志文件,提取关键数据 如果你还在使用传统的字符串查找和替换方法,那么正则表达式(Regular Expression,简称RegEx)将彻底改变你的工作效率。正则表达式是一种强大的文本处理工具,能够用简...

gitblog_00918的博客 402

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

精通Python正则表达式:文本处理与高效匹配的完全指南

正则表达式是Python中处理文本的强大工具,能够实现复杂的模式匹配和文本操作。通过掌握基本语法和常用命令,可以应对多种情况下的文本处理需求。在实际应用中,结合具体的场景和需求,灵活运用正则表达式能大大提高编程效率和代码的可维护性。

欢迎来到技术蜜糖罐的IT角落! 4526
上一篇: 量化交易究竟用Python还是C++?你的选择是什么?
下一篇: Python Rich:美化终端显示效果
Python_P叔
博客等级 码龄3年 5454粉丝 827原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值