正则表达式的高效应用
你有没有遇到过这种场景?
- 爬取的电商评论里混着几十种格式的手机号,手动筛选太慢?
- 整理的办公文档里有全角半角逗号、分号甚至空格分隔的课程名单,
str.split()根本切不干净? - 处理聊天机器人历史记录时,要把所有敏感词一键替换成
*且忽略大小写?
这时候,正则表达式(Regular Expression,简称 Regex) 这把“文本处理瑞士军刀”就能派上大用场——一套规则搞定所有复杂文本特征的描述、匹配与处理,也是 Daoman Python AI 在爬虫、日志分析、自动化办公脚本里的核心工具。
1. 正则核心语法:看懂30%就能覆盖80%场景
正则由普通字符(比如纯字母 a、数字 5)和赋予描述能力的元字符组成,新手不用死记硬背所有符号,先记住这张高频速查表就行:
💡 转义保命提示:如果要匹配正则里的特殊符号本身(比如域名里的
.、分组用的(),一定要加反斜杠转义成\.、\(。
2. Python 的 re 模块:6个核心函数就够了
Python 内置的 re 模块封装了所有正则功能,不用额外安装第三方库。同样,高频场景只需要记住这6个函数:
3. 高频实战案例:拿来就能改
直接说语法太干,看几个Python办公/爬虫/日常高频能用的案例:
案例1:一键敏感词过滤(忽略大小写)
用 re.sub + re.IGNORECASE(缩写 re.I) 就能搞定,支持“或”匹配和模糊字符集:
案例2:批量提取合规手机号
用 re.findall 从杂乱文本里捞数据,这里用简化版的国内手机号规则(1开头,第二位3-9,后面9位数字):
案例3:多分隔符混合文本拆分
当文本有全角半角、空格、竖线等一堆分隔符时,str.split() 只能处理单一分隔符,正则 re.split() 能通吃:
4. 新手必踩的坑:贪婪 vs 非贪婪匹配
这是最容易出错的地方,一句话总结:
- 贪婪模式(默认):尽可能「多吃」匹配内容
- 非贪婪模式(加
?):尽可能「少吃」,遇到第一个符合条件的结束标记就停
看个HTML标签提取的对比就懂了:
最后:3个避坑/提效小技巧
- 必须用原始字符串
r'':Python 字符串本身有转义(比如\n是换行),加r可以避免和正则的转义冲突 - 循环前务必预编译:如果一个正则要在循环里用1000次以上,先用
compiled = re.compile(pattern)存起来,再用compiled.findall(),效率能提30%-50% - 先在线调试再写代码:推荐用 regex101.com,它能可视化匹配过程,还能自动生成Python/Java/JS等语言的代码
(全文完,约2000字)

