第30课:正则表达式:文字侦探的放大镜
比字符串查找更强大的武器
你已经学过 "hello" in text 来检查一段文字里有没有某个词。但如果要找"所有手机号"呢?手机号的规律是:1开头、11位数字——用 in 可做不了!
正则表达式(Regular Expression,简称 regex)就是描述"文字长什么样"的模式语言。
📖 演示:正则初体验
🖥️ 计算机小知识
正则表达式的底层是一种叫有限状态机的计算模型。想象一个机器人沿着文字一个字符一个字符地走,每走一步根据当前字符决定"继续走"还是"找到了"——这就是状态机的工作方式。
有限状态机是计算机科学最基础的模型之一,不光正则表达式在用,电路设计、游戏AI、文本编辑器……到处都有它的身影。你写的每一个正则,背后都有一个状态机在跑!
基础语法:特殊字符
正则用特殊字符来描述模式:
| 符号 | 含义 | 例子 | 匹配 |
|---|---|---|---|
. |
任意一个字符 | a.c |
abc, a1c, a c |
\d |
一个数字 | \d\d |
37, 99 |
\w |
一个字母/数字/下划线 | \w+ |
hello_123 |
\s |
一个空白(空格、换行) | a\sb |
a b |
* |
前面那个重复 0 次或更多 | ab*c |
ac, abc, abbc |
+ |
前面那个重复 1 次或更多 | ab+c |
abc, abbc |
? |
前面那个出现 0 或 1 次 | colou?r |
color, colour |
📖 演示:用特殊字符匹配
re 模块三大招
📖 演示:search、findall、sub
分组与或操作
用 () 分组,用 | 表示"或":
📖 演示:分组与或操作
练习
✏️ 练习:提取邮箱和电话