🔥 EXPRESIONES REGULARES, TRANSFORMACIÓN DE DATOS

Transformación de datos con expresiones regulares en Go

En el desarrollo de software, una de las tareas más habituales es cómo limpiar datos con expresiones regulares en golang para asegurar que la información sea confiable y utilizable. Cuando los usuarios ingresan datos, es común que se presenten errores como espacios innecesarios, caracteres no permitidos o simples equivocaciones de tipeo.

Por ejemplo, un ejemplo de sanitización de datos en go puede ser necesario cuando se reciben fechas en distintos formatos o con errores. Entre los problemas más frecuentes al capturar información se encuentran:

  • Espacios dobles.
  • Errores de tipeo.
  • Caracteres no válidos.

Supongamos que recibimos una lista de fechas con distintos errores y queremos normalizarlas. El siguiente código muestra cómo aplicar expresiones regulares para validar fechas en go y limpiar los datos de entrada:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    // datos de entrada
    datosDeEntrada := []string{
        "2019-01-01 00:00:00a",
        "2019-01-01_ 00:00:00",
        "2019-01-01  00:00:00",
    }
    // preparar la expresion regular
    caracteresInvalidos := regexp.MustCompile("[^0-9 -:]")
    multiplesEspacios := regexp.MustCompile("[ ]{2,}")
    // sanitizar cada uno de los valores
    for _, dato := range datosDeEntrada {
        dato = caracteresInvalidos.ReplaceAllString(dato, "")
        dato = multiplesEspacios.ReplaceAllString(dato, " ")
        fmt.Println(dato)
    }

}

En este fragmento, los datos de entrada contienen cadenas con errores como letras al final, guiones bajos o espacios duplicados. El objetivo es eliminar caracteres inválidos en cadenas de texto go y dejar solo los elementos necesarios para una fecha válida.

datosDeEntrada := []string{
    "2019-01-01 00:00:00a",
    "2019-01-01_ 00:00:00",
    "2019-01-01  00:00:00",
}

Primero, se define una expresión regular que identifica cualquier carácter que no sea número, espacio, guion o dos puntos. Así, se filtran los elementos no deseados y se mejora la calidad de los datos.

caracteresInvalidos := regexp.MustCompile("[^0-9 -:]")

Además, se utiliza otra expresión regular para reemplazar cualquier grupo de dos o más espacios por un solo espacio, optimizando la presentación de la información.

multiplesEspacios := regexp.MustCompile("[ ]{2,}")

Finalmente, se recorre el slice de datos y se aplican ambas expresiones regulares para limpiar cada elemento. Este uso de regexp en golang para procesamiento de datos es fundamental para garantizar que la información esté lista para ser utilizada en otros procesos.

for _, dato := range datosDeEntrada {
    dato = caracteresInvalidos.ReplaceAllString(dato, "")
    dato = multiplesEspacios.ReplaceAllString(dato, " ")
    fmt.Println(dato)
}

El resultado final muestra las fechas correctamente formateadas y listas para su uso:

2019-01-01 00:00:00
2019-01-01 00:00:00
2019-01-01 00:00:00

Conclusión

El manejo y transformación de datos mediante expresiones regulares en Go es una habilidad esencial para cualquier desarrollador que busque asegurar la calidad y confiabilidad de la información procesada. Utilizar expresiones regulares permite automatizar la limpieza de datos, eliminando caracteres no deseados y corrigiendo errores comunes de entrada. Esto no solo mejora la integridad de los datos, sino que también facilita su posterior análisis y utilización en aplicaciones más complejas. Dominar estas técnicas en Go ayuda a crear sistemas más robustos y eficientes, capaces de adaptarse a diferentes escenarios y tipos de datos. En definitiva, invertir tiempo en aprender y aplicar expresiones regulares para la transformación de datos es una decisión estratégica para cualquier profesional del software.


Cuestionario de repaso

  1. ¿Para qué se utilizan las expresiones regulares en el procesamiento de datos?
  2. ¿Qué problemas comunes pueden presentarse al ingresar datos manualmente?
  3. ¿Cómo se define una expresión regular para filtrar caracteres no válidos en Go?
  4. ¿Cuál es la función de la expresión regular [ ]{2,} en el ejemplo?
  5. ¿Por qué es importante limpiar y normalizar los datos antes de utilizarlos en una aplicación?