Lobsters | 原文链接 | 2026-09-12 收录

新版本软弃用 re.match(),改用 re.prefixmatch()

来源: hugovk.dev — 2026-09-10

概述

作者先用一道小测验开场:re.match("pi","api") 不匹配,因为 re.match() 只在字符串开头匹配,这个「只锚定开头」的隐含行为是最老的 Python 陷阱之一。文章解释了 PEP 387 在 2023 年引入的「软弃用」:API 仍然被文档化和测试,只是不再发展、也不建议在新代码里使用,且不会发警告、也不会自动升级成删除。于是新版本新增了 re.prefixmatch() 作为 re.match() 的别名,并在文档里软弃用旧名字;同时给出对照:re.search() 两端都不锚定,re.match() 与 re.prefixmatch() 只锚定开头,re.fullmatch() 两端都锚定。他还给出用 Ruff 的 TID251 规则禁止 re.match() 的配置。

核心要点

金句

用 re.prefixmatch() 的前提是你真的只想要这个半锚定;否则请用 re.search() 或 re.fullmatch()。
返回 Lobsters 首页