正在加载 Python 环境…
← 第29课 第30课:正则表达式:文字侦探的放大镜 第31课 →

第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

分组与或操作

() 分组,用 | 表示"或":

📖 演示:分组与或操作

练习

✏️ 练习:提取邮箱和电话