Las expresiones regulares son una herramienta poderosa para la manipulación y búsqueda de texto. En Perl, las expresiones regulares son una parte integral del lenguaje y se utilizan ampliamente para tareas como la validación de datos, la búsqueda y reemplazo de texto, y la extracción de información.

Conceptos Clave

  1. Patrones Básicos: Los patrones son secuencias de caracteres que describen un conjunto de cadenas posibles.
  2. Metacaracteres: Caracteres especiales que tienen significados específicos en las expresiones regulares.
  3. Modificadores: Opciones que alteran el comportamiento de las expresiones regulares.
  4. Captura y Grupos: Técnicas para extraer partes específicas de una cadena.

Patrones Básicos

Ejemplo 1: Coincidencia Simple

my $text = "Hola Mundo";
if ($text =~ /Mundo/) {
    print "¡Coincidencia encontrada!\n";
}

Explicación:

  • =~ es el operador de coincidencia.
  • /Mundo/ es la expresión regular que busca la palabra "Mundo" en la cadena $text.

Ejemplo 2: Coincidencia con Metacaracteres

my $text = "Hola Mundo 123";
if ($text =~ /\d+/) {
    print "¡Número encontrado!\n";
}

Explicación:

  • \d coincide con cualquier dígito.
  • + indica una o más repeticiones del carácter anterior.

Metacaracteres Comunes

Metacaracter Descripción
. Cualquier carácter excepto nueva línea
\d Cualquier dígito
\w Cualquier carácter de palabra (letra, dígito, guion bajo)
\s Cualquier espacio en blanco
^ Inicio de la cadena
$ Final de la cadena
* Cero o más repeticiones
+ Una o más repeticiones
? Cero o una repetición
` `
() Agrupación
[] Conjunto de caracteres

Modificadores

Ejemplo 3: Modificador i (Ignorar Mayúsculas/Minúsculas)

my $text = "Hola Mundo";
if ($text =~ /mundo/i) {
    print "¡Coincidencia encontrada sin importar mayúsculas/minúsculas!\n";
}

Explicación:

  • El modificador i hace que la coincidencia no distinga entre mayúsculas y minúsculas.

Ejemplo 4: Modificador g (Global)

my $text = "123 456 789";
my @matches = ($text =~ /\d+/g);
print "Números encontrados: @matches\n";

Explicación:

  • El modificador g busca todas las coincidencias en lugar de detenerse en la primera.

Captura y Grupos

Ejemplo 5: Captura de Subcadenas

my $text = "Nombre: Juan, Edad: 30";
if ($text =~ /Nombre: (\w+), Edad: (\d+)/) {
    my $nombre = $1;
    my $edad = $2;
    print "Nombre: $nombre, Edad: $edad\n";
}

Explicación:

  • (\w+) y (\d+) son grupos de captura que almacenan las coincidencias en $1 y $2 respectivamente.

Ejercicios Prácticos

Ejercicio 1: Validar una Dirección de Correo Electrónico

Instrucciones: Escribe una expresión regular que valide una dirección de correo electrónico.

Solución:

my $email = "[email protected]";
if ($email =~ /^[\w\.-]+@[\w\.-]+\.\w+$/) {
    print "Correo electrónico válido\n";
} else {
    print "Correo electrónico no válido\n";
}

Explicación:

  • ^[\w\.-]+ coincide con uno o más caracteres de palabra, puntos o guiones al inicio.
  • @ coincide con el símbolo arroba.
  • [\w\.-]+ coincide con uno o más caracteres de palabra, puntos o guiones después del arroba.
  • \.\w+$ coincide con un punto seguido de uno o más caracteres de palabra al final.

Ejercicio 2: Extraer Números de una Cadena

Instrucciones: Escribe un script que extraiga todos los números de una cadena dada.

Solución:

my $text = "El precio es 100 dólares y el descuento es 20 dólares";
my @numbers = ($text =~ /(\d+)/g);
print "Números encontrados: @numbers\n";

Explicación:

  • (\d+) captura uno o más dígitos.
  • El modificador g asegura que se capturen todas las coincidencias.

Conclusión

En esta sección, hemos cubierto los conceptos básicos de las expresiones regulares en Perl, incluyendo patrones simples, metacaracteres, modificadores y técnicas de captura. Las expresiones regulares son una herramienta esencial para cualquier programador de Perl, y dominar su uso puede facilitar enormemente la manipulación y análisis de texto.

En el próximo módulo, profundizaremos en el uso de referencias y estructuras de datos complejas en Perl. ¡Sigue practicando y nos vemos en la siguiente lección!

© Copyright 2024. Todos los derechos reservados