💬 观点Simon Willison
Soft-deprecating re.match() — Python 3.15 软弃用 re.match(),改用语义更清晰的 re.p
Python 3.15 软弃用 re.match(),改用语义更清晰的 re.prefixmatch()
2026-09-11原文
本文为要点摘要,完整细节以原文为准。
- Python 3.15 对
re.match()做软弃用:只标记为「不应再用于新代码」,并不承诺未来移除。对工具链的含义是,静态检查或 lint 规则可以据此提示新代码改用新名字,而不必担心破坏存量项目。 - 新名字
re.prefixmatch()直接点明行为——只在字符串开头锚定、不锚定结尾。对写正则的开发者来说,命名即文档,能减少「match 到底匹不匹配整串」这类反复查文档的认知成本。 - 作者提醒多数场景其实该用
re.search()(串中任意位置匹配)或re.fullmatch()(整串匹配)。对 agent 与代码生成工具的含义是,生成正则相关代码时应优先选语义明确的那一个,而不是沿用历史默认的re.match()。
原文:Soft-deprecating re.match() · 作者 Simon Willison