Python 3.15 通过 re.prefixmatch() 明确正则匹配语义。

Simon Willison··作者 Simon Willison

关键信息

re.prefixmatch() 从字符串开头开始匹配,但不要求模式覆盖整个字符串;re.search() 会在任意位置查找,而 re.fullmatch() 要求整个字符串完全匹配。软弃用意味着新代码不应再使用 re.match(),但目前并没有将其删除的承诺或计划。

资讯摘要

Python 3.15 发布经理 Hugo van Kemenade 介绍了软弃用长期存在的 re.match() 函数的计划。这个函数的名称经常令人困惑,因为它只检查字符串开头是否匹配,而不是在整个字符串中搜索,也不要求完整字符串都符合模式。Python 3.15 提供了名称更明确的 re.prefixmatch(),直接表达其从字符串开头进行匹配的行为。

如果模式可能出现在输入内容的任意位置,开发者通常应使用 re.search()。如果需要确认整个输入都符合模式,则应使用 re.fullmatch()。软弃用表示不建议在新代码中继续使用 re.match(),但并不承诺未来一定会删除它,因此现有应用可以继续运行,同时生态系统能够逐步迁移到更清晰的 API。

资讯正文

软弃用 re.match()

Python 有一个“软弃用”(soft deprecation)的概念:API 会被标记为“不应再用于编写新代码”,但并不承诺或威胁要在未来移除它们。

Python 3.15 版本经理 Hugo van Kemenade 介绍说,在即将发布的 3.15 版本中,历史悠久但极易令人困惑的 re.match() 函数已进入软弃用阶段。现在,用户可以使用名称清晰得多的替代函数 re.prefixmatch()——这个名称反映了它会在字符串开头进行锚定,但不会在字符串末尾进行锚定。

大多数时候,你可能真正需要的是 re.search()(在字符串的任意位置匹配该模式),或 re.fullmatch()(匹配整个字符串)。

来源与参考

  1. 原始链接
  2. Soft-deprecating re.match()

收录于 2026-09-12