En este artículo se vera como generar aplicaciones basadas en expresiones regulares para extraer información de interés para su futura manipulación.
Muchas veces necesitamos desarrollar un procedimiento o función que extraiga información importante de un documento de texto, por ejemplo los URLS de una página Web para generar un Spider o Robot. Gracias al uso de expresiones regulares crear este tipo de aplicaciones es bastante sencillo.
En el siguiente ejemplo se hará uso de los espacios de nombre (Namespaces).
Desde Visual Studio 2005.
Generar una forma Windows
Para este código se utilizara el Espacio de Nombres System, System.Data, System.Net, System.Text, System.Text.RegularExpressions y System.Collections
' Versión VB .Net
Imports System
Imports System.Net
Imports System.Text
Imports System.Text.RegularExpressions
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim listadoURL As New ArrayList()
listadoURL = UrlList("http://www.e-mision.net/crazyhouse")
End Sub
Public Function UrlList(ByVal url As String) As ArrayList
' Se crea un arreglo de bytes
Dim resultHTML() As Byte
' Se crea un objeto de la clase ArrayList
Dim linksArray As New ArrayList
' Se crea un objeto de la clase WebClient class
Dim myWebClient As New WebClient
' Se extrae el contenido HTML del url proporcionado por el usuario
resultHTML = myWebClient.DownloadData(url)
' Crear un objeto UTF8 que describe como esta codificado el contenido de la página
Dim utf8Enc As New UTF8Encoding
' Se obtiene la codificación UTF8 del resultado resultHTML
Dim myResultString As String = utf8Enc.GetString(resultHTML)
' Se convierte el resultado a minúsculas para facilitar el uso de la expresión regular.
myResultString = myResultString.ToLower()
' Se genera una expresión regular para revisar y extraer los URL
Dim regularexpre As New Regex("href\\s*=\\s*(?:(?:\\\(?<url>[^\\\]*)\\\)|(?<url>[^\\s]* ))")
' Extraer aquellas cadenas que cumplen con la expresión y se almacenan en una colección
Dim collectionurls As MatchCollection = regularexpre.Matches(myResultString)
' Se adicionan las cadenas(URLs) al arreglo
For Each res As Match In collectionurls
For Each t As Group In res.Groups
linksArray.Add(t.Value)
Next
Next
' Se retorna el arreglo
Return linksArray
End Function
End Class
// Versión C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Text.RegularExpressions;
using System.Collections;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
ArrayList listadoURL = new ArrayList();
listadoURL = UrlList("http://www.e-mision.net/crazyhouse");
}
public ArrayList UrlList(string url)
{
// Se crea un arreglo de bytes
byte[] resultHTML;
// Se crea un objeto de la clase ArrayList
ArrayList linksArray = new ArrayList();
// Se crea un objeto de la clase WebClient class
WebClient myWebClient = new WebClient();
// Se extrae el contenido HTML del url proporcionado por el usuario
resultHTML = myWebClient.DownloadData(url);
// Crear un objeto UTF8 que describe como esta codificado el contenido de la página
UTF8Encoding utf8Enc = new UTF8Encoding();
// Se obtiene la codificación UTF8 del resultado resultHTML
string myResultString = utf8Enc.GetString(resultHTML);
// Se convierte el resultado a minúsculas para facilitar el uso de la expresión regular.
myResultString = myResultString.ToLower();
// Se genera una expresión regular para revisar y extraer los URL
Regex regularexpre = new Regex("href\\s*=\\s*(?:(?:\\\(?<url>[^\\\]*)\\\)|(?<url>[^\\s]* ))");
// Extraer aquellas cadenas que cumplen con la expresión y se almacenan en una colección
MatchCollection collectionUrls = regularexpre.Matches(myResultString);
// Se adicionan las cadenas(URLs) al arreglo
foreach (Match res in collectionUrls)
{
foreach (Group t in res.Groups)
{
linksArray.Add(t.Value);
}
}
// Se retorna el arreglo
return linksArray;
}
}
}
Con este ejemplo se ha aprendido como utilizar expresiones regulares para manipular información relevante.
Publicado en www.programar.net por Rubén Darío Sánchez
Posted
jue, mar 2 2006 0:00
by
Maverick