El Codiguero
Programando para la wé

Avatar de alvlin Publicado por alvlin, el 23/08/2008
Categorías: Programación

Expresiones regulares: Introducción

Hace mucho tiempo que tengo este tutorial pendiente, lo había escrito antes pero por diversos motivos ya no estaba disponible. Aproveché para reescribirlo y expandirlo, pronto habrá incluso una versión PDF completa descargable.
Me gustaría que en caso de encontrar algún error (técnico, sintáctico, semántico, ortográfico o gramatical) me lo hicieran saber usando los comentarios de cada entrada.

Definición y conceptos

Una definición posible de lo que son las "expresiones regulares" (también llamadas "patrones") es la siguiente:

"Una expresión regular es una secuencia de caracteres que describe la forma de otra en un lenguaje formal".

De un modo más práctico: se escribe una secuencia de caracteres que un programa (llamado motor) entiende, y que se comparará contra un texto dado. El objetivo de esto suele ser validar datos de entrada en una aplicación (es decir, comprobar que los datos tienen la forma necesaria) o buscar trozos de texto en cadenas mayores.

Aunque en principio el concepto pueda sonar extraño, en realidad cualquier persona está acostumbrada al uso de "patrones", véase como ejemplo la siguiente descripción:

"Un nombre de usuario seguido de una arroba (@) y de un nombre de dominio"

Si al leer eso se imagina una dirección de correo electrónico, queda probado que nuestra mente está habituada al uso de patrones, aunque sean simples.

Pueden encontrarse muchos otros ejemplos cotidianos en los que cualquier persona es capaz de reconocer "algo" mediante una descripción de "su forma básica" (uno bien claro: una mesa es una superficie plana sostenida por patas).

La diferencia principal entre estos ejemplos y las expresiones regulares es que las computadoras no son capaces de entender conceptos como "nombre de usuario" o "nombre de dominio": solamente reconocen caracteres. Esto hace necesario un análisis previo del texto buscado (partes repetidas, secuencias diferentes pero siempre del mismo largo, espacios entre partes, etc) para poder escribir un patrón efectivo.

Conceptos

Ahora, algunos términos relacionados con el tema.

Motor de expresiones regulares

El motor de expresiones regulares es el programa encargado de procesar el patrón y realizar la comparación con el texto. Los dos tipos de motores más usados (según la sintaxis de patrones que aceptan) son los compatibles con Perl y los compatibles con POSIX (y POSIX extendido). Casi todo lo que se explica en este texto usa la sintaxis POSIX (aunque es compatible con ambas sintaxis). En los capítulos finales se encuentran comentarios que ayudarán a escribir patrones con ambas sintaxis casi sin diferencias.

Metacaracteres

Los metacaracteres son caracteres que tienen un significado particular además de su significado literal. Algunos incluso tienen varios significados "extra", dependientes del contexto en el que se encuentran. Se describirán más adelante, pero es importante conservar el concepto al leer los capítulos siguientes.

Patrón

El patrón o "expresión regular" es un conjunto de caracteres. No hay límite de complejidad o largo, y un patrón simple bien puede ser simplemente "a". Para este patrón, el motor de expresiones regulares devolverá una comparación exitosa con cualquier texto que contenga una letra "a".

Uso de las expresiones regulares

Todos los lenguajes de programación proveen alguna forma de trabajar con patrones. Por simplicidad este tutorial intenta ser independiente del lenguaje, mostrando tablas de resultados en vez de ejemplos de código. En los capítulos finales se describirá el uso con PHP, Java, Perl, Python y Javascript.

  • Digg
  • del.icio.us
  • Meneame
  • Reddit
  • Technorati
  • StumbleUpon
  • Facebook
  • LinkedIn
  • MySpace
  • Yahoo! Buzz
  • YahooMyWeb

» Si te pareció interesante, dejá un comentario...



Todo el contenido de este sitio está bajo una licencia de Creative Commons.

Campaña AnyBrowser | XHTML 1.0 Válido | CSS 2 Válido | WAI A

Diseño creado por alvlin. Sitio basado en WordPress