Python正则表达式高频应用包括:数字匹配(如\d+、\d{3}-\d{4}-\d{4})、邮箱与URL提取、噪声清理(re.sub去空格/标签/中文)、格式验证(fullmatch+先行断言)。

Python正则表达式(re模块)是文本处理的利器,但初学者常被语法绕晕。掌握几个高频、实用的模式,就能解决80%的日常需求——比如提取手机号、邮箱、日期,过滤空格或标签,验证格式是否合规。
匹配数字与连续数字串
数字是最基础也最常用的匹配目标。用\d代替[0-9]更简洁;加+表示“一个或多个”,*表示“零个或多个”。
-
r'\d+':匹配至少一位数字,如"abc123def"→"123" -
r'\d{3}-\d{4}-\d{4}':匹配形如"138-1234-5678"的手机号分段格式 -
r'\b\d{6}\b':用\b确保是独立6位数(如邮编),避免匹配到"1234567"中的子串
提取邮箱与URL等结构化文本
邮箱和URL有较固定规律,可借助字符类和量词组合写出稳健模式。
-
r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}':覆盖主流邮箱格式(支持下划线、+号别名等),{2,}防止误匹配.c -
r'https?://[^\s]+':匹配以http://或https://开头、直到空白符为止的URL(简单有效,适合日志清洗) - 注意:不建议用正则“完美”校验邮箱——RFC标准太复杂,生产环境推荐用专用库(如
email-validator)
清理与替换常见噪声
数据预处理中,去空格、删HTML标签、合并换行是高频操作,re.sub()配合合适模式即可一行搞定。
立即学习“Python免费学习笔记(深入)”;
-
re.sub(r'\s+', ' ', text):把所有空白符(空格、制表、换行)替换成单个空格 -
re.sub(r']+>', '', html_text):粗略去除HTML标签(不处理嵌套或自闭合标签,简单页面够用) -
re.sub(r'[\u4e00-\u9fff]+', '', text):移除中文(Unicode范围),适用于只需英文数字的场景
验证格式是否符合要求
用re.fullmatch()或^...$确保整个字符串完全匹配,避免部分匹配导致误判。
- 手机号验证(国内):
re.fullmatch(r'1[3-9]\d{9}', phone)—— 必须是11位、以13–19开头 - 密码强度(含大小写字母+数字,至少8位):
r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$',利用正向先行断言((?=...))做多条件检查 - 日期(YYYY-MM-DD):
r'^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$',限制月份和日期范围,比单纯\d{4}-\d{2}-\d{2}更可靠
正则不是越长越强,而是越准越稳。从实际问题出发,先写样本数据,再小步调试模式,比死记语法更有用。多数时候,一个清晰的\d+或[^@]+@[^@]+\.[^@]+就已足够——不复杂但容易忽略细节。










