¡Bienvenid@ a La bloguera.net! Iniciar sesión | ÚNETE a la web | Ayuda

e-Notes

Apuntes tecnológicos de mi día a dia como informático
Procesado de textos /Text Processing

(English Below) 

Cuando es necesario extraer textos de un fichero, buscar patrones, parsearlos, etc, la solución ideal es utilizar expresiones regulares. Este método nos da un enfoque más declarativo sobre el patrón que queremos buscar en el texto, en lugar de definir cómo se va a hacer esa búsqueda.

El lenguaje por excelencia en el uso de la expresiones regulares es Perl. Es un lenguaje de script que incluye un soporte nativo para expresiones regulares dentro de su propia sintaxis. Aquí tenéis un ejemplo de cómo se parsearía un listado de teléfonos en Perl :

# Abrir fichero con todos los códigos

open (Tfnos, $ruta) || die "No puedo abrir fichero";
while
(<Tfnos>)
{

    if
(/(.+)-(\d+)/) #formato de línea: Nombre - Teléfono
    {
        my
$nombre = $1;
        my
$tfno = $2;
    }
}
close(Tfnos);


Simple, eh? Con este soporte podemos realizar todo tipo de operaciones con cadenas, que en lenguajes púramente imperativos requerirían mucho más esfuerzo. Aun así, lenguajes y plataformas como PHP, Java, .NET ya incluyen librerías o paquetes para incluir esta funcionalidad.

 

(English) 

When we need to extract information from a file, look for a pattern, or parse a text, the ideal solution is using regular expressions. This technique uses a declarative approach, defining the search pattern, instead of programming how the search will be performed.

The 'state of the art' programming languaje for regular expressions is Perl, a script languaje which includes native support within its own sintax for regular expressions. Next, you can see a simple example showing how to parse a basic name-phone directory in Perl:

 

# Abrir fichero con todos los códigos

open (Tfnos, $ruta) || die "No puedo abrir fichero";
while
(<Tfnos>)
{

    if
(/(.+)-(\d+)/) #formato de línea: Nombre - Teléfono
    {
        my
$nombre = $1;
        my
$tfno = $2;
    }
}
close(Tfnos);

 

Simple, uh? With this feature we can perform a wide range of string operations, which would require much more effort in pure imperative languages. However, other languages and frameworks such as PHP, Java or .NET already include libraries or packages to use this functionality.



Posted: martes, 29 de abril de 2008 13:49 por jimmydj2000

Comentarios

Aún no ha hecho nadie ningún comentario. Escribe alguno y sé el primero :P

¿Qué opinas?

(requerido) 

(requerido) 

(opcional)

(requerido) 

Notificación de comentarios

Si quieres recibir un email cuando se actualice este artículo, por favor, regístrate aquí

Suscribir a los comentarios de este artículo RSS