Guía rápida de referencia: Expresiones Regulares en Python

Las expresiones regulares son una herramienta esencial en Python para buscar, validar y transformar texto. Se implementan a través del módulo estándar re, que proporciona funciones como search(), match(), findall(), split() o sub().

Puedes experimentar tus expresiones directamente en regex101.com seleccionando el motor Python.

Clases de Caracteres

ExpresiónDescripción
[ABC]Coincide con cualquiera de los caracteres dentro de los corchetes.
[^ABC]Coincide con cualquier carácter que no esté en el conjunto.
[A-Z]Coincide con un carácter dentro del rango especificado (inclusive).
.Coincide con cualquier carácter, excepto el salto de línea (\n). Puede incluirlo si se usa la bandera re.S.
\wCoincide con un carácter de palabra (letra, número o guion bajo). Equivalente a [A-Za-z0-9_].
\WCoincide con cualquier carácter que no sea de palabra.
\dCoincide con un dígito (0–9).
\DCoincide con cualquier carácter que no sea un dígito.
\sCoincide con un carácter de espacio en blanco (espacio, tab, salto de línea, retorno de carro, etc.).
\SCoincide con cualquier carácter que no sea espacio en blanco.
\n, \r, \t, \f, \vCoinciden con salto de línea, retorno de carro, tabulación, salto de página y tabulación vertical, respectivamente.
\xFFCoincide con el carácter cuyo valor hexadecimal es FF.
\uFFFFCoincide con el carácter Unicode especificado (por ejemplo \u00F1 → ñ).

Anclas

ExpresiónDescripción
^Coincide con el inicio de la cadena o de una línea (si se usa re.M).
$Coincide con el final de la cadena o de una línea (si se usa re.M).
\bCoincide con un límite de palabra (entre un carácter de palabra y uno que no lo es).
\BCoincide con una posición que no sea límite de palabra.
\ACoincide solo al inicio de toda la cadena (no afectado por re.M).
\ZCoincide solo al final de toda la cadena (no afectado por re.M).

Grupos de Captura

ExpresiónDescripción
(ABC)Agrupa tokens y crea un grupo de captura.
(?P<nombre>ABC)Grupo de captura con nombre, referenciable como (?P=nombre) o \g<nombre> en reemplazos.
\1, \2, \3Referencias a grupos de captura por número.
(?:ABC)Grupo no capturante: agrupa sin guardar coincidencias.

Lookaround (búsquedas anticipadas y retrospectivas)

ExpresiónDescripción
(?=ABC)Lookahead positivo: coincide si después del patrón actual está ABC.
(?!ABC)Lookahead negativo: coincide si no hay ABC después.
(?<=ABC)Lookbehind positivo: coincide si antes del patrón está ABC.
(?<!ABC)Lookbehind negativo: coincide si no hay ABC antes.

Cuantificadores y Alternancia

ExpresiónDescripción
+1 o más repeticiones del token anterior.
*0 o más repeticiones del token anterior.
?0 o 1 del token anterior (opcional).
{n}Exactamente n repeticiones.
{n,}n o más repeticiones.
{n,m}Entre n y m repeticiones.
+?, *?, ??, {n,m}?Cuantificadores no codiciosos (buscan la menor coincidencia posible).
``

Sustitución (Reemplazo en re.sub())

ExpresiónDescripción
\1, \2, …Inserta el texto del grupo de captura correspondiente.
\g<nombre>Inserta el texto del grupo con nombre.
\\Inserta un carácter \ literal.
\n, \r, \tCaracteres de escape comunes.

Banderas en Python (re)

BanderaDescripción
re.I o re.IGNORECASEIgnora mayúsculas y minúsculas.
re.M o re.MULTILINE^ y $ coinciden al inicio y final de cada línea.
re.S o re.DOTALLHace que . coincida también con saltos de línea.
re.U o re.UNICODEInterpreta \w, \W, \b y \B según Unicode (activado por defecto en Python 3).
re.X o re.VERBOSEPermite escribir expresiones legibles con espacios y comentarios.
re.A o re.ASCIIHace que \w, \b, \d y \s solo reconozcan caracteres ASCII.