Sección de códigos , trucos y ejemplos para visual basic


198 - Extraer direcciones url utilizando Expresiones Regulares

<Volver> - Anterior - Siguiente



 

Ejemplo que utiliza el objeto RegExp ( Librería Microsoft VbScript regular Expressions) para extraer desde un archivo todas las direcciones Url de tipo Http, Https y Ftp.

 

Antes aclarar que yo de Expresiones regulares -5. Pero investigando un poco, y metiendo mano a una expresión regular que tenía hecha en JavaScript, la volqué con un par de modificaciones a los ponchasos para este ejemplo en Visual basic.

El problema de la expresión mencionada, era que al extraer las direcciones, dejaba algunos caracteres que no formaban parte de la URL, es decir no quedaba la dirección limpia.

También mientras buscaba, vi un ejemplo en la web del Guille hecho para Vb .Net, que extrae las Url, pero extrae las Url que son visible en la página, es decir las que están entre las etiquetas <a href= ...y </a>, y yo para un trabajo que tenía que realizar necesitaba todas las Url, incluyendo las que no figuran entre dichas etiquetas, como es el caso por ejemplo de algunos Script, donde las mismas están asignadas en variables por decir un caso, y claro,, la expresión buscaba solo si en la cadena se encontraba el atributo href.

De todos modos por si te interesa, el artículo del Guille lo podés acceder desde este enlace:

Extraer la dirección de un link HTML con ejemplo de cómo usarlo con VB .NET y C#

 

Siguiendo, para poder utilizar el objeto RegExp en vb6, se debe incluir en el proyecto la referencia a Microsoft VbScript regular Expressions.

 

vista de la ventana de referencia de visual basic para incluir la librería RegExp

 

Una ves incluida la referencia, se debe declarar dos variables. Una que es de tipo Math. Esta variable se utiliza dentro de una colección en un bucle For each para recorrer los resultados. La variable de colección es de tipo MatchCollection

Para especificar la expresión regular, se debe hacer en la propiedad Pattern del objeto RegExp.

 

o_RegExp.Pattern = Expresion

 

Para ejecutar la búsqueda que extrae las direcciones se utiliza el método Execute, pasándole como parámetro la cadena donde se buscará, en este caso el contenido del fichero.

La definición del método Execute: Devuelve un objeto MatchCollection que contiene un objeto Match para cada coincidencia encontrada.

Luego hay algunas otras pocas propiedades y métodos sobre el objeto RegExp, como por ejemplo la propiedad Count , que devuelve la cantidad de elementos encontrados de la colección. La propiedad Value, que tiene el valor de la misma, etc..,

Para ver estas propiedades podés hacerlo desde el Examinador de objetos de vb.

También hay algunos métodos y propiedades para investigar:

Metodo Test: Devuelve un valor Boolean que indica si hubo coincidencias entre la expresión regular usada y la cadena a analizar

 

Otro llamado Replace para hacer reemplazados en una cadena con una expresión determinada.

 


Armar el ejempo

Para hacer el ejemplo colocar un Control CommonDialog1, un control List1 y un Command1. Al presionar el Command, se debe seleccionar el archivo desde el CommonDialog, y en ese momento se ejecuta la función Extraer_Url, luego las agrega al control ListBox. La salida es algo por el estilo:

 

vista del ejemplo para extraer las direcciones url de tipo http, https y Ftp

 

Código fuente en un Formulario:

 

Nota: si solo querés los enlaces visibles, podés usar la expresión de la web del guille ( la dirección la puse al comienzo de la página )

Acá te muestro una captura, que funciona perfecto con este ejemplo, solo hay que cambiar la cadena de la expresión regular

 

vista del ejemplo que utiliza la expresión regular de la web del Guille

 


Recursos vb - Enlaces relacionados



Buscar en Recursos vb