Expresiones Regulares, Limpieza de datos

¿Cómo limpiar datos mediante expresiones regulares?

Otra forma de ir preparando los datos es remover el código que no necesitamos, de forma que solo nos quede el código que necesitamos.

Una etiqueta html luce por lo regular así…

<etiqueta propiedad="valor"></etiqueta>

Por lo que para hacer coincidir cualquier etiqueta html usamos la expresión regular.

<[^>]+>

Es decir

  • < apertura de etiqueta.
  • [^>]+ seguido por cualquier caractér uno o mas veces excepto >.
  • > seguido por la etiqueta de cierre

Entonces…

  • Tenemos que encontrar las filas.
  • Eliminar el html de cada una de ellas.

Nuestro programa lucirá así…

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "regexp"
)

func main() {

    datosComoBytes, err := ioutil.ReadFile("lista.html")
    if err != nil {
        log.Fatal(err)
    }

    coincidenciasRe := regexp.MustCompile(`<li>(.+)</li>`)

    htmlRe := regexp.MustCompile(`<[^>]+>`)

    nombres := coincidenciasRe.FindAllString(string(datosComoBytes), -1)

    for _, nombre := range nombres {
        nombreSinHtml := htmlRe.ReplaceAllString(nombre, "")
        fmt.Println(nombreSinHtml)
    }

}

Explicación…

Tenemos el mismo caso del ejemplo anterior, pero en esta ocasión.

  • Creamos una expresión regular que nos retorne todas las líneas de cada uno de los nombres.
coincidenciasRe := regexp.MustCompile(`<li>(.+)</li>`)
  • Preparamos una expresión regular que coincida con todas las etiquetas html.
htmlRe := regexp.MustCompile(`<[^>]+>`)
  • Ahora vamos a leer todo el html y obtener las coincidencias usando la primera expresión regular, esto nos da un arreglo de coincidencias.
nombres := coincidenciasRe.FindAllString(string(datosComoBytes), -1)
  • Recorremos todas las coincidencias.
for _, nombre := range nombres {
    // ...
}
  • Dentro del bucle utilizamos la segunda expresión regular para limpiar todo lo que sea html.
nombreSinHtml := htmlRe.ReplaceAllString(nombre, "")
fmt.Println(nombreSinHtml)
  • Al finalizar la impresión del programa es…
LuisPerez
AdrianRomo
DanielQuiroz