Python 3.15 marca re.match() como soft-deprecated y estrena re.prefixmatch()
La función no desaparece ni lanza avisos, pero deja de ser lo que se escribe en código nuevo. El alias re.prefixmatch() refleja mejor que ancla al principio de la cadena y no al final.
Python 3.15 va a declarar re.match() en soft deprecation. La función sigue ahí, se comporta igual que siempre y no hay ningún plan de borrarla, pero deja de ser lo que se usa al escribir código nuevo. El release manager de la rama 3.15, Hugo van Kemenade, lo ha explicado en su blog: junto al nombre viejo aparece ahora re.prefixmatch(), que dice exactamente lo que hace.
Conviene tener claro qué significa soft deprecation en Python, porque el término se confunde con el retiro normal. Es un mecanismo recogido en el PEP 387: la API se marca como "no usar en código nuevo" sin prometer ni amenazar con eliminarla más adelante. No hay DeprecationWarning, no hay fecha de caducidad. Es una recomendación de estilo respaldada por la documentación, no un temporizador.
El problema no era el rendimiento, era el nombre
re.match() ancla la coincidencia al principio de la cadena, pero no al final. Eso significa que re.match("\\d+", "123abc") da positivo. Mucha gente la usaba convencida de estar validando la cadena entera, y el nombre no ayudaba a desmentirlo. re.prefixmatch() describe el comportamiento sin rodeos: coincide con un prefijo.
En la mayoría de los casos lo que se quiere es otra cosa. Si buscas el patrón en cualquier posición, la función correcta es re.search(). Si lo que quieres es que el patrón cubra toda la cadena, es re.fullmatch(). La confusión entre estas tres lleva años generando bugs silenciosos en validaciones de entrada, parsers caseros y filtros de texto.
El cambio es de nomenclatura, no de motor. No hay variación de rendimiento ni de semántica de grupos de captura, y re.match() sigue funcionando en el mismo módulo. Quien mantenga código antiguo no tiene que tocar nada; quien escriba nuevo, tiene motivos para no volver a teclear el nombre viejo.
La decisión encaja en una limpieza más amplia de la biblioteca estándar, donde arrastrar nombres históricos tiene coste real: cada persona que llega a Python tiene que aprender qué hacía cada alias y por qué se llamaba así. La explicación de van Kemenade entra en el detalle y el PEP 387 define el marco general del soft deprecation.
Qué mirar en tu código
Si tienes reglas de lint o revisión interna que ya marcan re.match(), ahora tienen respaldo en la documentación. Si no las tienes, es un buen momento para añadir la excepción: no porque rompa nada, sino porque el reemplazo se lee mejor y evita el error de creer que valida la cadena completa. Las herramientas de análisis estático que sigan el ciclo de CPython tardarán un poco en incorporarlo, así que la corrección a mano sigue siendo la vía rápida en proyectos con regex dispersas por media base de código.

