Python正则表达式核心函数详解:match、search、sub、split与compile

木白
木白
发布时间:2026-10-15| 2人浏览过
原创

本文详细解析Python中正则表达式处理的五大核心函数:re.match、re.search、re.sub、re.split及re.compile。重点阐述match与search在匹配起始位置上的关键区别,演示sub函数的替换逻辑与回调处理,并介绍split分割与compile编译优化的实际应用,帮助开发者高效掌握字符串模式匹配技巧。

本文主要介绍Python中常用的正则表达式处理函数。在Python中,实现模式匹配主要有两种方式:'搜索'和'匹配'。

re.match

re.match函数尝试从字符串的起始位置进行全部或部分模式匹配。例如,以下代码用于匹配字符串中的第一个单词。


import re
text = "PythonTab.com is a good Python website"
m = re.match(r"(\w+)\s", text)
if m:
print m.group(0), '\n', m.group(1)
else:
print 'not match'

re.match函数的原型定义如下:re.match(pattern, string, flags)

第一个参数pattern为正则表达式,例如"(\w+)\s"。若匹配成功,函数返回一个Match对象;若未匹配,则返回None。

第二个参数string表示待匹配的原始字符串。

第三个参数flags为标志位,用于控制正则表达式的匹配行为,例如是否忽略大小写或多行匹配模式等。

需要注意的是,re.match成功匹配的前提是:字符串的起始部分必须满足正则表达式的条件。

re.search

re.search函数会在整个字符串中查找模式匹配,一旦找到第一个匹配项即返回结果;如果字符串中不存在匹配项,则返回None。


import re
text = "PythonTab.com is a good Python website"
m = re.search(r'\Pyt(on)n\s', text)
if m:
print m.group(0), m.group(1)
else:
print 'not search'

re.search函数的原型为:re.search(pattern, string, flags)

该函数各参数的含义与re.match完全一致。

re.match与re.search的主要区别在于:re.match仅从字符串开头进行匹配,若开头不符合正则表达式规则,则匹配失败并返回None;而re.search会扫描整个字符串,直到找到第一个符合规则的匹配项为止。

re.sub

re.sub函数用于替换字符串中符合正则表达式的匹配项。下面的示例演示了如何将字符串中的空格替换为连字符'-'。


import re
text = "PythonTab.com is a good Python website"
print re.sub(r'\s+', '-', text)

re.sub函数的原型为:re.sub(pattern, repl, string, count)

其中第二个参数repl代表替换后的字符串,在示例中为'-'。

第四个参数count指定替换的次数。默认值为0,表示对所有匹配项进行替换。

此外,re.sub还支持通过函数对匹配项进行复杂处理。例如:re.sub(r'\s', lambda m: '[' + m.group(0) + ']', text, 0),该代码将字符串中的空格替换为'[ ]'。

re.split

可以使用re.split函数来分割字符串。例如:re.split(r'\s+', text),该操作将字符串按空格分割为一个单词列表。

re.findall

re.findall函数用于获取字符串中所有符合模式的匹配字符串。例如:re.findall(r'\w*oo\w*', text),该操作获取字符串中包含'oo'的所有单词。

re.compile

re.compile函数可将正则表达式编译为正则表达式对象。对于频繁使用的正则表达式,预先编译为对象可以提升执行效率。以下是一个使用正则表达式对象的示例。


import re
text = "PythonTab is a good Python website"
regex = re.compile(r'\w*on\w*')
print regex.findall(text)   #查找所有包含'on'的单词
print regex.sub(lambda m: '[' + m.group(0) + ']', text) #将字符串中含有'on'的单词用[]括起来。

如需了解更多Python中正则表达式处理函数的详细信息,请参考相关文章。

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

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 算法库。