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.