Python 正则表达式基础与 re 模块核心用法

Mason
Mason
发布时间:2026-10-12 | 3人浏览过
原创

本文详细解析 Python 中正则表达式的基础语法及 re 模块的核心函数。通过对比 match 与 search 的扫描差异,演示 sub 替换与 compile 编译的实际操作,帮助开发者快速掌握文本模式匹配、数据提取与格式清洗的标准流程。

Python 正则表达式基础与 re 模块核心用法

正则表达式(Regular Expression)是用于描述文本匹配规则的通用语言。Python 内置的 re 模块提供了完整的正则引擎支持,能够将复杂的文本查找、验证与替换逻辑转化为简洁的代码。

第1步:掌握基础匹配规则

正则表达式的核心在于字符集合与量词的配合。常用基础语法如下:

  • .:匹配除换行符外的任意单个字符。例如 .ython 可匹配 python 或 fython。
  • [pj]:字符集,匹配括号内任意一个字符。
  • [^abc]:反转字符集,匹配不在括号内的任意字符。
  • |:选择符,表示“或”的关系,如 a|b 匹配 a 或 b。
  • ?:使左侧元素变为可选(出现 0 次或 1 次)。
  • *、+、{m, n}:分别表示重复 0 次或多次、1 次或多次、m 到 n 次(默认贪婪模式)。

使用反斜杠 \ 可对元字符进行转义。例如 python\.org 将严格匹配字面量的网址后缀而非任意字符。

第2步:理解边界控制与预定义字符

精确匹配往往需要借助锚点与快捷字符组:

  • ^ 与 $:分别匹配字符串的开头与结尾。
  • \b 与 \B:匹配与非单词边界(分界处指字母、数字、下划线与常规空格之间)。
  • \d、\w、\s:等价于 [0-9]、[a-zA-Z0-9_] 及空白字符 [\t\n\r\f]。组合首字母大写即为非匹配组。
  • (re):捕获组,可将匹配结果单独提取供后续引用或反向分组调用。

re 模块关键函数实操

第3步:定位文本匹配——match 与 search

两者均返回匹配对象或 None,但扫描范围存在本质区别:

  • re.match(pattern, string):仅从字符串起始位置尝试匹配。若首部结构不符则直接返回 None,不会向后扫描。
  • re.search(pattern, string):扫描整个字符串,返回第一个成功匹配的片段对象。
import re
text = "www.runoob.com"

# match 仅在开头匹配
print(re.match("www", text).span())   # 输出: (0, 3)
print(re.match("com", text))          # 输出: None

# search 可在任意位置匹配
print(re.search("www", text).span())  # 输出: (0, 3)
print(re.search("com", text).span())  # 输出: (11, 14)

执行上述代码时,若需获取匹配的确切坐标,可通过返回对象的 .span() 方法查看起始与结束索引。若匹配失败,调用该方法前需先判空。

第4步:字符串替换与清理——sub

re.sub(pattern, repl, string) 可用于将所有符合模式的子串替换为指定内容。常用于日志清洗、隐私脱敏或格式标准化:

import re
phone_info = "2004-959-559 # This is Phone Number"

# 删除 Python 风格的行尾注释
num_clean = re.sub(r"#.*$", "", phone_info)
print("Cleaned Text:", num_clean)

# 移除所有非数字字符
only_digits = re.sub(r"\D", "", phone_clean)
print("Digits Only:", only_digits)

第5步:模式编译优化——compile

当同一正则规则需在循环或高频调用中反复使用时,直接使用顶层函数会引发重复的语法解析开销。应先用 re.compile(pattern) 预加载为正则表达式对象,再调用其实例方法:

import re
pattern_obj = re.compile(r"\d{3}-\d{3}")
result = pattern_obj.search("Call 123-456 or 789-012")
print(result.group())  # 输出: 123-456

编译后的对象同时提供 search、match、findall 等方法,业务逻辑与顶层函数完全一致,但运行效率更高且代码可读性更强。

以上就是 Python 正则表达式基础与 re 模块核心用法的详细内容,更多关于 Python 文本处理与自动化清洗的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表