Aprovecha el precio especial

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comienza ahora

Termina en:

02d

15h

52m

29s

1

¿Cómo fijar el formato de una url con expresiones regulares?

Con las expresiones regulares nosotros podemos saber cuando una linea en una archivo de texto, un csv o lo que sea es o no una url, esto nos brinda muchas ventajas para que podamos quitar las cosas que no nos sirven en un archivo o cosas similares, entonces, hay distintas maneras para hacer esto y por eso voy a hacer este articulo. Lo primero que tenemos que saber es la forma o el formato de una url, por eso y para razones de este ejercicio, en un archivo de texto hay que poner el siguiente texto:

https://platzi.com/clases/1301-expresiones-regulares/11860-urls9102/ https://platzi.com/clases/expresiones-regulares/ https://www.instagram.com/BlueOrigin/ https://www.instagram.com/ https://ichef.bbci.co.uk/news/640/cpsprodpb/8536/production/_103520143_gettyimages-908714708.jpg http://www.purina-latam.com/sites/g/files/auxxlc391/files/styles/facebook_share/public/presentar-a-tu-gato.jpg?itok=5IOxXrPh https://www.facebook.com/ nombre-usuario

Una vez teniendo el contenido, que en mi caso lo voy a nombrar urls.txt, entonces ahora voy a proceder a hacer el comando con grep en la consola de Linux. Si tu lo estas haciendo en Atom, no hay problema, lo importante es tener el comando y que este funcione.

El comando es el siguiente:

grep -E -no'^https?:\/\/[a-z\.\-]+' urls.txt

Donde:

  • grep es el comando de Linux
  • -E es para que grep tome las expresiones regulares
  • -no son dos banderas de grep para que me de la linea del match y me de el match solo, sin texto extra
  • ^ es el inicio de la linea
  • https? dice que se tiene que tener http para que haga match y la s es opcional
  • // es para los dos slashs que le siguen al https
  • [a-z.-]+ es para indicarle al comando que quiero todas las letras de la a-z, además de que puede incluir puntos y guiones, solo que hay que saltarlos, ya que son reservados. Por ultimo el signo mas quiere decir que puede ser uno o mas de cualquiera de los símbolos antes mencionados.

Al aplicar este comando, lo que obtenemos es lo siguiente:

1:https://platzi.com 2:https://platzi.com 3:https://www.instagram.com 4:https://www.instagram.com 5:https://ichef.bbci.co.uk 6:http://www.purina-latam.com 7:https://www.facebook.com

Hasta aquí ya sabemos cuales si hacen match y cuales son los dominios de los que estamos hablando, además de esto, si queremos saber que mas hay después del dominio podemos usar el siguiente comando

grep -E -no '^https?:\/\/[a-z\.\-]+\/.+' urls.txt

Para obtener el siguiente resultado:

1:https://platzi.com/clases/1301-expresiones-regulares/11860-urls9102/ 2:https://platzi.com/clases/expresiones-regulares/ 3:https://www.instagram.com/BlueOrigin/ 5:https://ichef.bbci.co.uk/news/640/cpsprodpb/8536/production/_103520143_gettyimages-908714708.jpg 6:http://www.purina-latam.com/sites/g/files/auxxlc391/files/styles/facebook_share/public/presentar-a-tu-gato.jpg?itok=5IOxXrPh 7:https://www.facebook.com/ nombre-usuario

Sin embargo, podemos ver que en el 7 hay un espacio después del .com/, lo que significa que esa url no es del todo valida, para resolver eso tenemos que corregir nuestro código, quedándonos de la siguiente manera:

grep -E -no '^https?:\/\/[a-z\.\-]+\/\S+' urls.txt

Donde:

  • / es para que me cuente el ultimo slash después del dominio
  • \S+ es para que me acepte todo menos espacios en blanco

El resultado es el siguiente:

1:https://platzi.com/clases/1301-expresiones-regulares/11860-urls9102/ 2:https://platzi.com/clases/expresiones-regulares/ 3:https://www.instagram.com/BlueOrigin/ 5:https://ichef.bbci.co.uk/news/640/cpsprodpb/8536/production/_103520143_gettyimages-908714708.jpg 6:http://www.purina-latam.com/sites/g/files/auxxlc391/files/styles/facebook_share/public/presentar-a-tu-gato.jpg?itok=5IOxXrPh

Escribe tu comentario
+ 2