Requisito previo: expresión regular en Python
La URL o el localizador uniforme de recursos consta de muchas partes de información, como el nombre de dominio, la ruta, el número de puerto, etc. Cualquier URL puede procesarse y analizarse mediante la expresión regular. Entonces, para usar la expresión regular, tenemos que usar la biblioteca re en Python.
Ejemplo:
URL: https://www.geeksforgeeks.org/courses When we parse the above URL then we can find Hostname: geeksforgeeks.com Protocol: https
Estamos usando la función re.findall() de la biblioteca re para buscar el patrón requerido en la URL.
Sintaxis: re.findall(regex, string)
Devuelve: todas las coincidencias no superpuestas del patrón en la string, como una lista de strings.
Ahora, veamos los ejemplos:
Ejemplo 1: en este ejemplo, extraeremos el protocolo y el nombre de host de la URL dada.
- Expresión regular para extraer el grupo de protocolos: ‘ (\w+):// ‘ .
- Expresión regular para extraer el grupo de nombres de host: ‘ ://www.([\w\-\.]+) ‘ .
Metacaracteres utilizados:
- \w: Coincide con cualquier carácter alfanumérico, esto es equivalente a la clase [a-zA-Z0-9_].
- +: Una o más apariciones de caracteres anteriores.
Código:
Python3
# import library import re # url link s = 'https://www.geeksforgeeks.org/' # finding the protocol obj1 = re.findall('(\w+)://', s) print(obj1) # finding the hostname which may # contain dash or dots obj2 = re.findall('://www.([\w\-\.]+)', s) print(obj2)
Producción:
['https'] ['geeksforgeeks.org']
Ejemplo 2: si la URL es de un tipo diferente, como ‘ file://localhost:4040/zip_file ‘, junto con el número de puerto, entonces para extraer el número de puerto, ya que es opcional, usaremos el ‘? ‘ notación. Aquí el número de puerto ‘ 4040′ aparece después del signo ‘:’ . Por lo tanto, como es un dígito (:(\d+)) se utiliza. Para que sea opcional, ya que todas las URL no terminan con el número de host, se usa esta sintaxis ‘(:(\d+))?’.
Metacaracteres utilizados:
- \d: coincide con cualquier dígito decimal, esto es equivalente a la clase establecida [0-9].
- +: Una o más apariciones de caracteres anteriores.
- ?: Coincide con cero o una aparición.
Código:
Python3
# import library import re # url link s = 'file://localhost:4040/abc_file' # finding the file capture group obj1 = re.findall('(\w+)://', s) print(obj1) # finding the hostname which may # contain dash or dots obj2 = re.findall('://([\w\-\.]+)', s) print(obj2) # finding the hostname which may # contain dash or dots or port # number obj3 = re.findall('://([\w\-\.]+)(:(\d+))?', s) print(obj3)
Producción:
['file'] ['localhost'] [('localhost', ':4040', '4040')]
Ejemplo 3: para una URL general, se puede usar esto, donde también se pueden construir los elementos de la ruta.
Python3
# import library import re # url s = 'http://www.example.com/index.html' # searching for all capture groups obj = re.findall('(\w+)://([\w\-\.]+)/(\w+).(\w+)', s) print(obj)
Producción:
[('http', 'www.example.com', 'index', 'html')]