python-第13-正则表达式
🎯 第一部分:正则表达式(re 模块)
✅ 1. re 模块核心方法
| 方法 | 功能 | 类比 |
| :— | :— | :— |
| re.match() | 从开头匹配 | 检查手机号是否以 1 开头 |
| re.search() | 查找第一个匹配项 | 在文章中找第一个邮箱 |
| re.findall() | 查找所有匹配项 | 提取文中所有 URL |
| re.split() | 根据模式分割字符串 | 用逗号把句子拆成词 |
| re.sub() | 替换匹配项 | 把电话号码中的横线换成空格 |
| 符号 | 意思 |
|---|---|
\S | 非空格的字符(字母、数字、符号都算) |
\s | 空格、换行、制表符等空白字符 |
\d | 数字 0-9 |
+ | 前面的东西至少出现 1 次,越多越好 |
1 | import re |
✅ 2. 正则模式语法(元字符)
| 元字符 | 含义 | 示例 |
| :— | :— | :— |
| . | 匹配任意字符(除了换行) | a.c → 匹配 abc, a1c |
| ^ | 行开头 | ^hello → 只匹配以 hello 开头的行 |
| $ | 行结尾 | world$ → 只匹配以 world 结尾的行 |
| * | 前一个字符重复 0 次或多次 | a* → 匹配 "", "a", "aa" |
| + | 前一个字符重复 1 次或多次 | a+ → 匹配 "a", "aa",不匹配 "" |
| ? | 前一个字符重复 0 或 1 次 | a? → 匹配 "", "a" |
| {m} | 重复 m 次 | a{3} → 匹配 "aaa" |
| {m,n} | 重复 m 到 n 次 | a{2,4} → 匹配 "aa", "aaa", "aaaa" |
| [] | 字符集合 | [abc] → 匹配 a、b、c 中任意一个 |
| \ | 转义字符 | \. → 匹配点号(不是任意字符) |
应该掌握什么?(核心能力)
| 层级 | 应掌握的内容 | 为什么重要 |
|——|—————-|———–|
| 1. 概念理解 | 知道“正则表达式是用来匹配/提取/替换文本模式的工具”
知道 re.search() 是找第一个匹配,re.findall() 是找所有 | 决定你能不能想到用它解决问题 |
| 2. 函数作用 | 记住 re.match / search / findall / sub / split 各自是做什么的
知道 os.path.exists() 判断文件是否存在 | 决定你会不会选对工具 |
| 3. 常见模式 | 会写最基础的:
- \d+(数字)
- [a-z]+(小写字母)
- \S+@\S+(简单邮箱)
- https?://\S+(URL) | 覆盖 80% 日常需求 |
| 4. 调试意识 | 知道如何测试正则是否匹配(比如用在线工具 regex101.com)
知道 group() 可以取结果 | 避免“写了但不知道对不对” |
graph LR
A[遇到文本处理问题] –> B{我能用正则解决吗?}
B – 能 –> C[回忆核心方法:search/findall/sub]
C –> D[写出大致模式:比如 \d+ 或 @\S+]
D –> E[让 AI 帮我完善细节或调试]
E –> F[运行验证 → 成功!]
B – 不能 –> G[考虑其他方案:字符串方法 / 解析库]
