Python正则表达式是通过re模块实现的文本模式匹配工具,支持^、$、\d、\w、+、*、?、\s、.等基础符号及分组提取,常用函数包括re.search、re.findall、re.sub和re.split,推荐使用原始字符串书写并合理选用编译与标志位。

Python正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于匹配、查找、替换文本中特定模式的工具。它用一套简洁但功能强大的语法规则,描述“你想要找什么样的字符串”,比如“以数字开头、后面跟3个字母、再以@结尾”这样的结构。
正则表达式怎么写?常见符号速览
正则本身不是 Python 独有,但 Python 通过 re 模块提供支持。基础符号包括:
-
^ 表示行首,$ 表示行尾(如
^abc$只匹配整个字符串刚好是 "abc") -
\d 匹配任意数字(等价于
[0-9]),\w 匹配字母、数字或下划线 - + 表示“前面的元素出现 1 次或多次”,* 表示“0 次或多次”,? 表示“0 次或 1 次”
- \s 匹配空白字符(空格、制表符、换行等),. 匹配除换行符外的任意单个字符
- 用括号 () 可以分组并提取内容,比如
(\d{4})-(\d{2})-(\d{2})能从 "2024-05-20" 中分别捕获年、月、日
Python 中怎么用 re 模块?常用函数
导入后,几个最常用的函数要记牢:
- re.search(pattern, string):在字符串中搜索第一个匹配项,返回 Match 对象或 None
- re.findall(pattern, string):返回所有匹配的字符串组成的列表(最常用)
- re.sub(pattern, repl, string):把匹配到的部分替换成指定内容
- re.split(pattern, string):按匹配的模式切分字符串
例如提取所有邮箱:
立即学习“Python免费学习笔记(深入)”;
Unix in a Nutshell同时涵盖了许多重要的、业界标准的开放源码工具 本书还完整地讨论了常用的shell(bash、ksh及tcsh)和重要元素如正则表达式,乃至旧式工具如sed、awk与vi。 Unix不是一个庞大的物体:它是一个综合体,而《Unix技术手册》则是将这一切合并在一起的一本书。 到底unix是什么?原始的unix源码是由sco拥有,unix注册商标是由open group拥有,而领先的仿unix系统则是gnu/linux、mac os x及solaris。这些版本所附的命令与选
import re
text = "联系我:alice@example.com 或 bob@test.org"
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', text)
# 得到 ['alice@example.com', 'bob@test.org']
实用小技巧和注意事项
写正则时容易踩坑,记住这几条:
- 用原始字符串 r'...' 写 pattern,避免反斜杠被 Python 字符串转义(比如
r'\n'是两个字符 \ 和 n,而'\n'是一个换行符) - 匹配中文用
[\u4e00-\u9fff],或加 re.U 标志让 \w \d 等支持 Unicode - 想忽略大小写就传 re.IGNORECASE(或简写
re.I) - 如果正则很长或重复使用,建议用 re.compile() 编译一次,提升效率
什么时候该用,什么时候别硬上?
正则很强大,但不是万能钥匙:
- 适合:日志解析、格式校验(手机号、身份证、邮箱)、批量文本清洗、简单 HTML 片段提取
- 慎用:解析嵌套结构(比如完整 HTML 或 JSON),这种场景推荐用专业解析器(如 BeautifulSoup、json.loads)
- 太复杂的正则难读难维护,不如拆成多步字符串操作 + 小正则组合
基本上就这些。入门从 re.findall 和几个基础符号开始练,边查边试,熟练了自然就顺了。










