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
tome las expresiones regularesgrep
para que me de la linea del match y me de el match solo, sin texto extrahttp
para que haga match y la s
es opcionalAl 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:
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