Hoy te mostraré cómo trabajar con expresiones regulares en el lenguaje de programación Go, también conocido como Golang.
No te mostraré cómo usar las expresiones regulares, pues las mismas son independientes del lenguaje (aunque también tienen sabores) y son un tema aparte, así que solo te mostraré cómo trabajar con expresiones regulares en Go a través de regexp.
Debido a que este es un post de introducción, vamos a ver algo sencillo: cómo saber si una cadena coincide con una expresión regular en Go. Para ello primero importamos a regexp:
import "regexp"
Luego compilamos la expresión regular:
expresionRegular := regexp.MustCompile("aquí_la_expresión_regular")
Y finalmente invocamos a Match convirtiendo al cadena a un arreglo de bytes:
coincide := expresionRegular.Match([]byte("cadena_para_probar))
El método Match
devolverá true
o false
dependiendo de si la cadena coincide o no con la expresión regular.
Por cierto, ya que estamos aquí, te recomiendo un sitio en donde yo pruebo mis expresiones regulares: https://regex101.com/
Veamos un ejemplo. Vamos a comprobar (de manera simple, no lo uses en producción sin antes probarlo) si una cadena representa el subdominio de un dominio, o al dominio en sí.
Por ejemplo, para el dominio parzibyte.me
, los subdominios como hola.parzibyte.me
, ejemplos.parzibyte.me
y todos los demás deberían pasar la prueba (agregando https://
o http://
al inicio). También parzibyte.me
debería pasarlo.
Entonces la expresión regular queda así:
^https?:\/\/([\w-]+\.)?parzibyte\.me$
Recuerda que ^
marca el inicio de la cadena, y $
el final. El ?
después de la s
indica que la S de http es opcional (así puede ser http o https). Luego usamos \
para escapar las barras (esto también sirve para escapar los puntos).
Después, ([\w-]+\.)?
indica que puede o no aparecer lo que está dentro de los paréntesis, y lo que está dentro quiere decir cualquier letra o número 1 o más veces, seguidas de un punto.
Anteriormente expliqué la expresión regular. Ahora la probamos:
expresionRegular := regexp.MustCompile(`^https?:\/\/([\w-]+\.)?parzibyte\.me$`)
subdominioPrueba := "https://blog.parzibyte.me"
if expresionRegular.Match([]byte(subdominioPrueba)) {
fmt.Println("Coincide")
} else {
fmt.Println("NO coincide")
}
En este caso la cadena cumple la expresión regular. Como puedes ver, defino la expresión regular en la línea 1. Después hago el Match
en la línea 3 e imprimo según el resultado.
Además de probar la expresión regular en Go con una cadena, podemos hacerlo con un arreglo para probar más opciones. El código completo queda así:
package main
/*
https://parzibyte.me/blog
*/import (
"fmt"
"regexp"
)
func main() {
subdominios := [...]string{
"https://ejemplo.parzibyte.me",
"https://sublime-pos.parzibyte.me",
"https://juegos.parzibyte.me",
"https://admin.parzibyte.me",
"https://hola.parzibyte.me",
"http://hola.parzibyte.me",
"http://www.parzibyte.me",
"https://www.parzibyte.me",
"https://hola.parzibyte.com",
"acerca-de.parzibyte.me",
}
expresionRegular := regexp.MustCompile(`^https?:\/\/([\w-]+\.)?parzibyte\.me$`)
subdominioPrueba := "https://blog.parzibyte.me"
if expresionRegular.Match([]byte(subdominioPrueba)) {
fmt.Println("Coincide")
} else {
fmt.Println("NO coincide")
}
for _, subdominio := range subdominios {
coincide := expresionRegular.Match([]byte(subdominio))
fmt.Printf("¿'%s' coincide? %t\n", subdominio, coincide)
}
}
Recorremos el arreglo y vamos probando cada opción. Para el caso de los dos últimos elementos, no habrá coincidencia, pues uno no inicia con http ni con https, además de que otro termina en .com
y no en .me
De este modo podemos trabajar con expresiones regulares en Golang. Aquí puedes leer más sobre Go en mi blog.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.