Python re模块核心函数与进阶用法全解析

栗子
栗子
发布时间:2026-10-13| 7人浏览过
原创

本文深入解析Python中re模块的核心功能,涵盖findall、search、match等查找方法的使用场景与返回值差异,以及split、sub、subn等字符串处理技巧。同时介绍compile编译优化与finditer迭代器节省内存的高级用法,帮助开发者高效处理文本匹配任务。

re模块核心查找方法

一、re模块的查找方法

1. findall:匹配所有符合条件的项,返回结果为一个列表,每一项对应一个匹配元素。


import re
ret = re.findall('\d+','asd鲁班七号21313') # 正则表达式,待匹配的字符串,flag
# ret = re.findall('\d','asd鲁班七号21313') # 正则表达式,待匹配的字符串,flag
# print(ret)

2. search:仅从左向右匹配第一个符合正则表达式的子串。它不直接返回结果字符串,而是返回一个匹配对象变量,需通过该变量的group()方法获取实际匹配内容。


import re
ret = re.search('\d+','asd鲁班七号21313')
print(ret) # 内存地址,这是一个正则匹配的结果
print(ret.group()) # 通过ret.group()获取真正的结果

2.1 若未找到任何匹配项,search将返回None。此时若直接调用group()方法,程序会抛出异常错误。


ret = re.search('\d+','asd鲁班七号')
print(ret.group())

2.2 因此,在调用group()前,建议先判断返回值是否为None,采用如下格式进行安全处理。


ret = re.search('\d+','asd鲁班七号')
if ret:
   print(ret.group())

3. match:从字符串起始位置开始匹配,其行为等同于在search的正则表达式前强制添加锚点'^'。


ret = re.match('\d+','1233asd鲁班七号21313')
print(ret)

字符串处理扩展功能

二、字符串处理扩展

1. split:用于字符串切割,根据正则规则将字符串分割为列表。


s = 'luban|cheng|an|'
print(s.split('|'))
s = 'luban34cheng21an89'
print(re.split('\d+',s))

2. sub:用于字符串替换,按正则规则查找并替换匹配内容。


ret = re.sub('\d+','H','luban34cheng21an89',1)
print(ret)

3. subn:功能同sub,但额外返回一个元组,其中第二个元素表示实际执行替换的次数。


ret = re.subn('\d+','H','luban34cheng21an89')
print(ret)

re模块进阶优化技巧

三、re模块的进阶用法

1. compile:用于预编译正则表达式,将其转换为字节码。在多次重复使用时,可避免重复编译开销,从而节省运行时间。


ret = re.compile('\d+') # 已经完成编译
print(ret)
res = ret.findall('luban34cheng21an89')
print(res)
res = ret.search('1233asd鲁班七号21313')
print(res.group())

2. finditer:返回一个迭代器对象,用于节省内存空间。所有匹配结果均通过该迭代器提供,需结合循环与group()方法逐个取值。


ret = re.finditer('\d+','1233asd鲁班七号21313')
for i in ret:
  print(i.group())

核心功能总结

四、总结

findall返回包含所有匹配项的列表;search返回第一个匹配对象的变量,可通过group()获取第一值,若无匹配则返回None,直接调用group会报错;match相当于在search的正则表达式前增加了'^'锚点。

split按正则规则切割字符串并返回列表,默认匹配到的内容会被移除;sub/subn用于替换,按正则规则查找目标内容,subn返回元组,其中第二个值为替换发生的次数。

compile用于预编译正则表达式,生成编译后的对象,可用于search、match、findall、finditer等方法,从而节省时间;finditer返回迭代器,所有结果包含在迭代器中,需通过循环配合group()取值,以此节省内存。

以上所述是小编给大家介绍的Python 常用模块 re 使用方法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。