为什么要学 Python 正则表达式
在 Python 开发中,字符串处理无处不在——提取日志 IP、校验手机号格式、过滤敏感词等。如果只用 find、split 或 replace,代码往往冗长且难以维护。正则表达式(Regular Expression)凭借简洁的语法,能实现复杂的匹配、查找和替换逻辑,堪称'字符串处理的瑞士军刀'。
无论是数据清洗、爬虫解析还是表单验证,掌握正则都能显著提升效率。下面我们从基础语法入手,结合 re 模块的核心方法,系统梳理 Python 正则的实战用法。
Python 正则表达式基础语法
Python 通过内置模块 re 支持正则表达式。先掌握以下核心元字符,就能覆盖 80% 的日常场景。
1. 匹配单个字符
| 元字符 | 说明 | 示例 |
|---|---|---|
| . | 匹配任意单个字符(除换行符 \n) | r"he.l" 匹配 'hell'、'helm' |
| [] | 匹配括号内任意一个字符 | r"[abc]" 匹配 'a'、'b' 或 'c' |
| [^] | 匹配不在括号内的任意字符 | r"[^0-9]" 匹配非数字字符 |
| \d | 匹配数字(等价于 [0-9]) | r"\d{3}" 匹配 3 位数字 |
| \D | 匹配非数字 | r"\D+" 匹配连续非数字字符 |
| \w | 匹配字母、数字、下划线 | r"\w+" 匹配单词字符 |
| \W | 匹配非单词字符 | r"\W" 匹配空格、符号等 |
| \s | 匹配空白字符(空格、制表符 \t、换行符 \n 等) | r"\s+" 匹配连续空白 |
| \S | 匹配非空白字符 | r"\S" 匹配非空格的任意字符 |
2. 匹配重复次数
| 元字符 | 说明 | 示例 |
|---|---|---|
| * | 匹配前面的字符 0 次或多次 | r"ab*" 匹配 'a'、'ab'、'abb' |
| + | 匹配前面的字符 1 次或多次 | r"ab+" 匹配 'ab'、'abb'(不匹配 'a') |
| ? | 匹配前面的字符 0 次或 1 次(可选) | r"ab?" 匹配 'a'、'ab' |
| {n} | 匹配前面的字符恰好 n 次 | r"\d{4}" 匹配 4 位数字(如 '2024') |
| {n,} | 匹配前面的字符至少 n 次 | r"\d{2,}" 匹配 2 位及以上数字 |

