EXPRESIONES REGULARES: GUÍA COMPLETA PARA PROGRAMADORES

Una expresión regular es una secuencia de caracteres que define un patrón de búsqueda. Este patrón se utiliza para encontrar coincidencias dentro de cadenas de texto. Por ejemplo el patrón ·"niñ" coincide con: "niño", "niña", "niños" y "niñas" pero no con "Niña" ya que distingue mayúsculas por defecto. Las expresiones regulares, o regex son soportadas por la mayoría de los lenguajes de programación modernos, editores de texto y bases de datos.

Metacaracteres Básicos

Los metacaracteres son símbolos con significado especial:
Metacarácter Descripción Ejemplo
"." Cualquier carácter (excepto salto de línea) "c.t → cat, cot, c3t"
"^" Inicio de la cadena "^Hola"
"$" Fin de la cadena "mundo$"
"*" Cero o más repeticiones "a*"
"+" Una o más repeticiones "a+"
"?" Cero o una repetición "colou?r"
"|" Alternativa (OR) "gato|perro"
"()" Agrupación y captura "(abc)+"
"[]" Clase de caracteres "[aeiou]"
"{}" Cuantificador exacto "a{2,4}"

Clases de Caracteres Predefinidas

  • "\d": Dígito (0-9)
  • "\D": Cualquier cosa que no sea dígito
  • "\w": Carácter alfanumérico y guion bajo
  • "\W": Lo contrario de "\w"
  • "\s": Espacio en blanco, espacio, tabaulado, salto de línea
  • "\S": Lo contrario de "\s".

Ejemplos

  • "\d{3}-\d{3}-\d{4}": Número de teléfono formato XXX-XXX-XXXX
  • "[\w\.-]+@[\w\.-]+\.\w+": Correo electrónico básico

Cuantificadores

  • "*": 0 o más
  • "+": 1 o más
  • "?": 0 o 1
  • "{n}": Exactamente n veces
  • "{n,}": n o más veces
  • "{n,m}": Entre n y m veces

Avance y Retroceso

  • "(?=patrón)": Avance positivo
  • "(?!patrón)": Avance negativo
  • "(?<=patrón)": Retorceos positivo
  • "(?<!patrón)": Retroceso negativo
Ejemplo:

// Encontrar "USD" solo si va seguido de un número:
USD(?=\d)

Modificadores Comunes

  • "i": No distingue mayúsculas
  • "m": Multilínea, "^" y "$" actúan por línea
  • "s": Coincide con saltos de línea
  • "g": Ttodas las coincidencias
  • "x" Comentarios y espacios

Mejores Prácticas

  • Evitar usar ".*" cuando se pueda ser más preciso.
  • Comentar las expresiones regulaes complejas flag "x" o comentarios en el código.
  • Probar con herramientas: regex101.com, RegExr o Debuggex.
  • Considerar el rendimiento: Las expresiones regulaes muy complejas pueden ser lentas.