实用指南:(17)100天python从入门到拿捏《正则表达式》

news/2025/11/7 11:28:07/文章来源:https://www.cnblogs.com/gccbuaa/p/19199111

正则表达式

正则表达式是 Python 文本处理中最强大的工具之一,它用于字符串的匹配、查找、替换、验证与提取

一、正则表达式基础

1.1 什么是正则表达式?

正则表达式是一种用来描述字符串匹配规则的模式语言
作用:

1.2 在 Python 中使用正则模块 re

Python 提供内置模块 re,当匹配成功时,会返回一个 Match 对象,否则返回None

常用函数如下

函数作用
re.match(pattern, string)字符串起始位置开始匹配
re.search(pattern, string)扫描整个字符串,返回第一个匹配项
re.findall(pattern, string)返回所有匹配结果列表
re.finditer(pattern, string)返回所有匹配结果的迭代器
re.sub(pattern, repl, string)替换匹配到的内容
re.split(pattern, string)按匹配分割字符串
re.compile(pattern)预编译正则表达式,提高效率

注意: match 和 search 是匹配一次 findall 匹配所有。

二、常用正则表达式语法

2.1 字符匹配基础

表达式含义说明
.匹配除换行符外任意字符a.b → “acb” ✅
^匹配字符串开头^Hello 匹配以 Hello 开头
$匹配字符串结尾world$ 匹配以 world 结尾
\d匹配数字(0–9)\d\d → “23” ✅
\D匹配非数字\D → “A” ✅
\w匹配字母数字下划线\w+ → “hello_123” ✅
\W匹配非字母数字下划线
\s匹配空白字符(空格、Tab、换行)
\S匹配非空白字符

使用原始字符串 r"pattern";模式元素(如 r’\t’,等价于 \t )匹配相应的特殊字符。

2.2 重复次数匹配

表达式含义说明
*重复0次或多次ab* → “a”, “abbb” ✅
+重复1次或多次ab+ → “ab”, “abbbb” ✅
?重复0次或1次ab? → “a”, “ab” ✅
{n}重复n次a{3} → “aaa” ✅
{n,}重复n次或以上a{2,} → “aa”, “aaaaa” ✅
{n,m}重复n到m次a{2,4} → “aa”, “aaa”, “aaaa” ✅

2.3 字符集与分组

表达式含义
[abc]匹配a或b或c中的任意一个
[^abc]匹配除a,b,c外的任意字符
(abc)分组匹配,捕获“abc”
(?:abc)非捕获分组,不保存内容
`ab`

2.4 特殊转义字符

表达式含义
\\匹配反斜杠
\n匹配换行符
\t匹配制表符

2.5 常见模式修饰符flags

修饰符说明
re.Ire.IGNORECASE忽略大小写
re.Mre.MULTILINE多行匹配(^ 和 $ 匹配每一行)
re.Sre.DOTALL. 匹配包括换行符在内的任意字符

三、常见案例

3.1 案例1:判断手机号格式是否合法

import re
text = "138-9999-0000"
pattern = r"^1[3-9]\d{9}$"  # 中国大陆手机号
print(bool(re.match(pattern, "13899990000")))  # ✅ True
print(bool(re.match(pattern, text)))            # ❌ False (因为中间有 '-')

3.2 案例2:提取字符串中的数字

import re
text = "商品价格: 价格199元,优惠后149元"
numbers = re.findall(r"\d+", text)
print(numbers)  # ['199', '149']

3.3 案例3:验证邮箱格式

import re
email = "hello_world99@163.com"
pattern = r"^[\w.-]+@[\w.-]+\.\w+$"
print(bool(re.match(pattern, email)))  # ✅ True

3.4 案例4:替换字符串中的敏感词

import re
text = "这个人很垃圾"
clean_text = re.sub(r"垃圾", "**", text)
print(clean_text)  # 这个人很**

3.5 案例5:从HTML中提取超链接

import re
html = '<a href="https://example.com">Example</a>'
pattern = r'href="(.*?)"'
link = re.findall(pattern, html)
print(link)  # ['https://example.com']

3.6 案例6:提取日期

import re
text = "会议时间:2025-10-12 10:30"
pattern = r"(\d{4})-(\d{2})-(\d{2})"
match = re.search(pattern, text)
if match:
print("年:", match.group(1))
print("月:", match.group(2))
print("日:", match.group(3))

3.7 案例7:分割字符串(多个分隔符)

import re
text = "apple, banana; orange|grape"
fruits = re.split(r"[,;|]\s*", text)
print(fruits)  # ['apple', 'banana', 'orange', 'grape']

3.8 案例8:使用 re.compile() 提升性能

import re
pattern = re.compile(r"\d{3}-\d{3,8}")
texts = ["010-12345", "021-7654321", "0755-888888"]
for t in texts:
if pattern.match(t):
print(f"匹配成功: {t}")

3.9 案例9:finditer() 获取位置索引

import re
text = "Tom is 18, Jerry is 22"
pattern = r"\d+"
for m in re.finditer(pattern, text):
print(f"找到数字 {m.group()},位置: {m.span()}")

3.10 案例10:匹配多行文本

import re
text = """Hello world
Python is great
Regex is powerful"""
pattern = re.compile(r"^Python.*$", re.M)
print(re.findall(pattern, text))  # ['Python is great']

四、常见正则表达式实用模板

场景正则表达式
匹配邮箱^[\w.-]+@[\w.-]+\.\w+$
匹配手机号(中国大陆)^1[3-9]\d{9}$
匹配身份证号^\d{17}[\dXx]$
匹配网址https?://[^\s]+
匹配IPv4地址(?:\d{1,3}\.){3}\d{1,3}
匹配日期\d{4}-\d{2}-\d{2}
匹配HTML标签<[^>]+>
匹配中文字符[\u4e00-\u9fa5]+

python学习专栏导航
(1)100天python从入门到拿捏《Python 3简介》
(2)100天python从入门到拿捏《python应用前景》
(3)100天python从入门到拿捏《数据类型》
(4)100天python从入门到拿捏《运算符》
(5)100天python从入门到拿捏《流程控制语句》
(6)100天python从入门到拿捏《推导式》
(7)100天python从入门到拿捏《迭代器和生成器》
(8)100天python从入门到拿捏《函数和匿名函数》
(9)100天python从入门到拿捏《装饰器》
(10)100天python从入门到拿捏《Python中的数据结构与自定义数据结构》
(11)100天python从入门到拿捏《模块》
(12)100天python从入门到拿捏《文件操作》
(13)100天python从入门到拿捏《目录操作》
(14)100天python从入门到拿捏《Python的错误与异常机制》
(15)100天python从入门到拿捏《面向对象编程》
(16)100天python从入门到拿捏《标准库》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/958651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BSP的概念

BSP的概念在 U-Boot(以及整个嵌入式开发领域)中,BSP(Board Support Package,板级支持包) 是连接通用软件(如 U-Boot 核心、Linux 内核)与具体硬件电路板的“桥梁”,是让通用软件能在特定硬件上正常运行的最小…

实用指南:Web 开发 27

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

RPM打包es

1.下载rpm-build打包软件以及依赖 yum install -y ruby ruby-devel gcc make rpm-build lrzsz 2.创建打包所需要的目录 mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} 3.将所需要的文件放入对应目录下 vim ~/…

2025年11月北京生殖咨询公司排行:美月国际咨询深度评测报告

正在备孕却反复受挫、高龄冻卵窗口期逼近、海外辅助生殖信息碎片化——这些真实焦虑让“北京生殖咨询公司”成为搜索热词。北京市卫健委2024年行业白皮书显示,近三年本市居民咨询海外辅助生殖的年增长率保持在18%,但…

亿级O2O(智能设备)系统架构笔记【原创】

智能硬件行业o2o场景,百万设备在线,每月亿级订单增量,战略对齐及4A架构规划实践案例笔记。一. 战略解码目标二. 业务架构梳理三. 产品架构梳理四. 技术架构规划五. 数据架构规划六. 运维架构规划 开源是一种态度,分…

2025年11月中国短视频制作公司排行榜:五强服务与效果评测

“双11”刚过,品牌方复盘直播战绩,发现短视频素材决定投流ROI;本地商户想趁年底冲量,却苦于不会拍、不会剪;上市公司要发布年报,需要一条30秒形象片在抖音冲上热榜——这些真实场景,让“找一家靠谱的短视频制作…

2025年11月中国短视频制作公司推荐榜:五强评测助你精准选型

2025年11月,品牌方、中小商家、本地生活服务商乃至制造业工厂,都在把“短视频”当成获客主阵地:抖音日活超7亿,视频号流量持续攀升,小红书买手链路跑通,平台算法却越来越卷。自己招团队成本高、试错周期长;找外…

前端工程化中Less第三方库中@Import的“~”和“@”用法

在前端工程化开发中经常会用到less第三方css库,其中@import指令中的~符号和@符号用于指定模块化路径,常见于Webpack等构建工具中。下面介绍使用方法: 路径解析规则 ~符号:表示模块请求,构建工具会将其解析为node_…

B1. Reverse Card (Easy Version)

https://codeforces.com/contest/1967/problem/B1 题意:给定n和m,求所有的有序对[a, b],1 <= a <= n, 1 <= b <= m,满足(a + b) % (b * gcd(a, b)) == 0 思路:放代码里了 总结: //(a + b) % (b * gc…

2025年11月纯粮白酒品牌评测榜:久久十强对比全记录

临近年底,亲友聚会、商务宴请、年货备货陆续启动,不少消费者把“纯粮白酒”列入必买清单。后台留言里,出现频率最高的问题是:价格从几十到上千,都标“纯粮固态”,到底怎么选?担心买到酒精勾兑、担心香气不纯、担…

2025年11月床垫品牌评价榜:60天试睡与可拆设计大排行

想买一张“睡着安心、拆着放心”的床垫,是很多人2025年秋冬换新的共同诉求。过去两年,全国消协受理的卧室用品投诉中,甲醛释放、塌陷变形、试睡期形同虚设位列前三;同时,国家卫健委在《睡眠健康行动计划》里首次把…

35th@《中国书法经纬论丛》@20251107

海外书迹研究 傅申 / 葛鸿桢 / 故宫出版社 / 2013-4 / 568.2 (41人评价) 《中国书法经纬论丛:海外书迹研究》系上世纪70年代末,美国耶鲁大学、加利福尼亚大学伯克利艺术博物馆、普林斯顿大学等单位合作举办的、关于我…

2025年11月纯粮白酒品牌推荐榜:久久十强对比全析

临近年底,家庭聚餐、商务宴请、礼赠往来进入高频期,白酒需求陡增。后台留言里,“怕买到香精酒”“想给长辈找纯粮口粮”“预算有限又要面子”成为高频痛点。中国酒业协会2024年度报告显示,纯粮固态发酵白酒市场占比…

USB-C 接口控制芯片

AW35615 是由 艾为电子(Awinic) 推出的一款 USB-C 接口控制芯片,主要用于实现 USB-C 连接器的功能管理,包括数据角色切换、电源角色切换、USB PD(Power Delivery)协议处理等核心功能。

鸿蒙实现滴滴出行项目之线路规划图 - 详解

鸿蒙实现滴滴出行项目之线路规划图 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

2025年11月销量第一证明机构权威榜:尚普与华信人深度对比评测

2025年11月,当企业准备冲刺年终招商、直播大促或年报披露时,“销量第一证明”往往成为品牌公信力最直观的通行证。面对广告法对绝对化用语的严格限制,市场、公关、法务三条线都在追问:谁能出具一份既被平台认可、又…

2025年不锈钢塑料颗粒料仓权威推荐榜单:不锈钢储料仓/镁铝合金料仓/大容量卧式储料仓源头厂家精选

在塑料工业年产超1亿吨的中国市场,不锈钢塑料颗粒料仓作为生产环节中不可或缺的储存设备,其性能直接影响生产连续性与产品质量。 不锈钢塑料颗粒料仓作为塑料加工、化工、食品等行业的关键储存设备,近年来随着环保要…

Gitee PPM:引领软件工厂智能化转型,打造协同操作系统新标杆

在数字化转型浪潮席卷全球的当下,软件开发行业正经历着前所未有的变革。根据IDC最新发布的《全球数字化转型支出指南》显示,到2025年,全球数字化转型投资规模将达到2.8万亿美元,其中软件开发与管理的智能化升级占据…

2025年11月销量第一证明机构服务榜:双雄对比与口碑排行

在品牌竞争进入“心智占位”阶段的当下,企业想合法使用“销量第一”字样,必须拿到权威第三方机构出具的销量第一证明。对正在筹备招商、融资、上市或大规模投放的广告主而言,选对证明机构直接决定后续宣传能否顺利过…

2025年无刷电机侧绕机权威推荐榜单:VCM侧绕机/电机绕线机/无刷电机绕线机源头厂家精选

随着无刷电机在新能源汽车、机器人、智能家电领域的广泛应用,市场对高性能侧绕设备的需求正以每年15% 的速度持续增长。 无刷电机侧绕机作为电机制造的核心装备,其技术水平直接影响电机性能、生产效率与产品质量。当…