Python 正则表达式(re模块)常用方法完整总结

Python 内置 re 模块用于处理正则表达式,search、findall、match、sub、split 是最核心、最常用的5个方法。

前置:使用前必须导入模块 import re


一、通用参数说明

所有方法共享的核心参数:

  1. pattern:必传,正则表达式字符串(匹配规则)
  2. string:必传,要匹配的原始字符串
  3. 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次

总结

  1. 提取所有内容 → 用 findall()
  2. 找第一个内容 → 用 search()
  3. 校验开头格式 → 用 match()
  4. 替换字符串 → 用 sub()
  5. 规则分割 → 用 split()
  6. 所有方法共享 pattern、string、flags 参数,语法高度统一
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐