Negaciones con gorrito en expresiones regulares
Clase 10 de 29 • Curso de Expresiones Regulares
Contenido del curso
El lenguaje: caracteres, operadores, y construcciones
- 5

El punto en regex: selecciona cualquier carácter
09:55 min - 6

\d \w \s: las 3 clases que localizan todo
13:55 min - 7

Cuantificadores regex: *, + y ? en acción
17:42 min - 8

Contadores en expresiones regulares
14:02 min - 9

Greedy vs lazy en regex: cuándo usar cada uno
07:47 min - 10

Negaciones con gorrito en expresiones regulares
Viendo ahora - 11

Cómo detectar números telefónicos sin letras
01:06 min - 12

Cómo procesar archivos CSV con millones de líneas
08:00 min
Uso práctico de Expresiones Regulares
- 13

Filtrar logs gigantes con expresiones regulares
07:22 min - 14

Expresiones regulares para URLs HTTP
08:07 min - 15

Regex para validar teléfonos con separadores y extensiones
12:30 min - 16

Validación de emails con regex
13:42 min - 17

Validación de coordenadas GPS con regex
17:16 min - 18

Validar nombres propios con regex
03:21 min
Usos avanzados en Expresiones Regulares
Expresiones Regulares en lenguajes de programación
- 20

Cómo extraer variables de URLs con regex
10:48 min - 21

Regex en múltiples lenguajes con CSV real
03:29 min - 22

Perl: CSV de fútbol en cero segundos
23:35 min - 23

Expresiones regulares en PHP: preg_match con CSV
09:29 min - 24

Extraer empates de archivos masivos con PHP
16:25 min - 25

Python regex para análisis de archivos CSV
21:58 min - 26

Lectura de archivos con BufferedReader en Java
07:59 min - 27

Escapar regex en Java: doble barra
08:48 min - 28

Validación de emails en JavaScript con regex
17:35 min - 29

Grep: filtra archivos masivos con regex
08:18 min
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.