Negaciones con gorrito en expresiones regulares

Clase 10 de 29Curso de Expresiones Regulares

Resumen

Las expresiones regulares se vuelven poderosas cuando dominas las clases de caracteres, sus negaciones y los atajos como \d, \w y \s. Aquí verás cómo encontrar dígitos, definir rangos, construir “anti clases” con el gorrito (^ dentro de una clase) y usar el cuantificador ? para separar grupos, por ejemplo, en teléfonos, sin añadir complejidad innecesaria.

¿Cómo funcionan las clases y atajos en expresiones regulares?

Entender las clases te permite buscar exactamente lo que necesitas. Puedes definir rangos y aprovechar shortcuts que aceleran la escritura y reducen errores.

¿Qué hacen los atajos para dígitos, palabras y espacios?

  • \d: encuentra cualquier dígito del cero al nueve. Hace tantos matches como dígitos haya en el texto.
  • \D: encuentra todo lo que no es un dígito. Útil para separar bloques numéricos.
  • \w: encuentra números, letras y guiones bajos. No incluye espacios, puntos, dos puntos ni slashes.
  • \W: encuentra todo lo que no pertenece a \w.
  • \S: encuentra todo lo que no es espacio. Ideal para “caracter que se vea”.

¿Cómo definir rangos dentro de clases?

  • Rango numérico con clase: coincide con un solo caracter en el rango.
[0-9] # cualquier dígito [0-4] # dígito entre 0 y 4 [A-Z] # letra mayúscula [A-C] # A, B o C
  • Puedes combinar rangos en la misma clase.
[0-5A-C]

¿Cómo negar clases y crear anti clases?

La negación tiene dos vías: usar la versión en mayúscula de un atajo (por ejemplo, \D) o usar el gorrito dentro de una clase para excluir lo que enumeras.

¿Cómo usar el gorrito dentro de la clase?

  • Coloca ^ al inicio de la clase para negar su contenido.
[^0-5A-C]
  • Esto coincide con todo lo que no sea 0–5 ni A–C. Es equivalente a decir 6–9 y D–Z, e incluso puedes excluir también el espacio si lo necesitas.

¿Qué utilidad práctica tienen estas negaciones?

  • Construir “anti clases” para filtrar lo que no quieres incluir.
  • Encontrar separadores que no sean dígitos entre bloques numéricos.
  • Evitar seleccionar espacios cuando busques caracteres “visibles”.

¿Cómo aplicar negaciones y cuantificadores para patrones tipo teléfono?

Cuando quieres capturar secuencias numéricas separadas por “algo que no es dígito”, la negación con \D y el cuantificador ? simplifican el patrón. Se describió el caso de seis dígitos, permitiendo un separador opcional.

¿Cómo se vería el patrón paso a paso?

  • Dos dígitos, un no dígito, dos dígitos, un no dígito opcional, dos dígitos.
\d\d\D\d\d\D?\d\d
  • Explicación breve.
    • \d: un dígito.
    • \D: un caracter que no es dígito.
    • ?: “cero o uno”. Permite que el último separador pueda o no estar.

¿Qué limitaciones debo considerar?

  • Como \D acepta “cualquier cosa que no sea dígito”, también haría match si el separador fuera una letra, por ejemplo “Y” o “R”. Es poco común, pero posible.

¿Qué sigue con líneas completas y CSV?

  • Además de buscar matches dentro del texto, se adelantó que podrás “anclar” el patrón para que coincida con líneas completas. Esto es útil con CSV: indicar que una línea empiece y termine según tu forma. Se verá un caracter que se repite con otro significado y quedará tan claro como el símbolo de interrogación.

  • Habilidades reforzadas.

    • Construcción de clases y rangos en regex.
    • Uso de atajos y sus negaciones: \d/\D, \w/\W, \S.
    • Negación de clases con el gorrito ^.
    • Control de opcionalidad con ?.
    • Diseño de patrones prácticos para números y separadores.

¿Te gustaría que probemos tu patrón con separadores específicos o que lo adaptemos a un formato de CSV concreto? Comparte un ejemplo y lo ajustamos juntos.