Python 正则表达式(re模块)常用方法完整总结
·
Python 正则表达式(re模块)常用方法完整总结
Python 内置 re 模块用于处理正则表达式,search、findall、match、sub、split 是最核心、最常用的5个方法。
前置:使用前必须导入模块
import re
一、通用参数说明
所有方法共享的核心参数:
- pattern:必传,正则表达式字符串(匹配规则)
- string:必传,要匹配的原始字符串
- flags:可选,匹配模式(常用:
re.I忽略大小写、re.S让.匹配换行符)
二、5大常用方法详解
1. re.match()
作用:从字符串开头位置匹配,只匹配一次;开头不满足直接返回 None。
核心场景:校验字符串必须以指定内容开头(如手机号、账号格式校验)。
语法
re.match(pattern, string, flags=0)
返回值
- 匹配成功:返回 匹配对象(Match object),可通过
group()获取结果 - 匹配失败:返回
None
代码示例
import re
# 匹配以"Hello"开头的字符串
text1 = "Hello Python"
text2 = "Python Hello"
# 匹配成功
res1 = re.match(r"Hello", text1)
print(res1.group()) # 输出:Hello
# 匹配失败(不是开头)
res2 = re.match(r"Hello", text2)
print(res2) # 输出:None
2. re.search()
作用:全局扫描字符串,找到第一个匹配的内容就停止,不限制开头。
核心场景:查找字符串中是否存在某内容,取第一个匹配结果。
语法
re.search(pattern, string, flags=0)
返回值
- 成功:匹配对象,
group()取值 - 失败:
None
代码示例
import re
text = "我的手机号:13800138000,备用号:13900139000"
# 查找第一个手机号
res = re.search(r"\d{11}", text)
print(res.group()) # 输出:13800138000(只返回第一个)
3. re.findall()
作用:全局查找所有匹配结果,返回列表,无匹配返回空列表。
核心场景:提取字符串中所有符合规则的内容(最常用)。
语法
re.findall(pattern, string, flags=0)
返回值
- 列表
list:所有匹配的字符串 - 无匹配:
[]
代码示例
import re
text = "价格:99元,优惠:20元,运费:8元"
# 提取所有数字
res = re.findall(r"\d+", text)
print(res) # 输出:['99', '20', '8']
4. re.sub()
作用:替换字符串中匹配的内容,支持批量替换。
核心场景:敏感词替换、格式化字符串、删除指定字符。
语法
re.sub(pattern, repl, string, count=0, flags=0)
新增参数
- repl:替换后的新字符串(也可以是函数)
- count:可选,最大替换次数,默认
0=替换所有
代码示例
import re
text = "今天天气真好,今天适合出去玩"
# 把所有"今天"替换成"明天"
res = re.sub(r"今天", "明天", text)
print(res) # 输出:明天天气真好,明天适合出去玩
# 只替换1次
res2 = re.sub(r"今天", "明天", text, count=1)
print(res2) # 输出:明天天气真好,今天适合出去玩
5. re.split()
作用:按照匹配的规则分割字符串,返回列表。
核心场景:多符号分割、复杂规则分割(比字符串split()强大)。
语法
re.split(pattern, string, maxsplit=0, flags=0)
新增参数
- maxsplit:可选,最大分割次数,默认
0=全部分割
代码示例
import re
text = "python,java;php c++ go"
# 按 逗号、分号、空格 分割(多规则)
res = re.split(r"[,; ]", text)
print(res) # 输出:['python', 'java', 'php', 'c++', 'go']
三、核心方法对比
| 方法 | 匹配位置 | 匹配次数 | 返回值 | 核心用途 |
|---|---|---|---|---|
match() |
仅开头 | 1次 | 匹配对象/None | 校验开头格式 |
search() |
全局任意位置 | 1次(第一个) | 匹配对象/None | 查找是否存在 |
findall() |
全局任意位置 | 所有 | 列表 | 提取全部结果 |
sub() |
全局任意位置 | 所有/指定次数 | 新字符串 | 替换内容 |
split() |
全局任意位置 | 所有/指定次数 | 列表 | 规则分割字符串 |
四、补充
1. 匹配对象常用方法
match()和search()返回的对象,用这3个方法取值:
group():获取匹配的字符串start():获取匹配开始的索引end():获取匹配结束的索引
import re
res = re.search(r"\d+", "abc123def")
print(res.group()) # 123
print(res.start()) # 3
print(res.end()) # 6
2. 常用正则符号
\d:数字\w:字母/数字/下划线+:匹配1次及以上*:匹配0次及以上{n}:匹配n次
总结
- 提取所有内容 → 用
findall() - 找第一个内容 → 用
search() - 校验开头格式 → 用
match() - 替换字符串 → 用
sub() - 规则分割 → 用
split() - 所有方法共享
pattern、string、flags参数,语法高度统一
更多推荐



所有评论(0)