🥇 Expresiones Regulares, Transformación de datos.

Otra de las tareas comunes que se realizan con expresiones regulares es la de limpiar datos de forma que estos puedan ser utilizados de forma segura.

Uno de los problemas comunes al ingresar datos es que se cometen errores al ingresarlos, algunos de estos errores son.

Retomando el ejemplo de la fecha, supongamos que se envia un conjunto de valores con errores, tenemos un ejemplo que sanitiza fechas.

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)
    }

}

Descripción del programa.

Los datos de entrada son 3 valores, el primero con una “a” al final del string. El segundo con un guión bajo, despues de la fecha, y el tercero con un doble espacio.

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

Primero hemos preparado una expresión regular para filtrar los caracteres inválidos. Esto quiere decir “todo aquello que no sea un numbero, un espacio, o alguno de los caracteres guión y dos puntos.”

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

Tambien requerimos una expresión en la cual se filtren todos el espacio en blanco de 2 o mas.

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

Ahora basta recorrer el slice mediante un bucle for para imprimir las salidas sanitizadas.

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

La salida del programa es la siguiente.

2019-01-01 00:00:00
2019-01-01 00:00:00
2019-01-01 00:00:00
Expresiones Regulares, Validación. Expresiones Regulares, Extracción de datos.
comments powered by Disqus