Les expressions regulars són una eina poderosa per a la manipulació de text en Perl. Permeten buscar, coincidir i substituir patrons en cadenes de text de manera eficient. En aquest tema, aprendrem els conceptes bàsics de les expressions regulars, com utilitzar-les en Perl i veurem alguns exemples pràctics.

Conceptes Bàsics

Què és una Expressió Regular?

Una expressió regular (regex) és una seqüència de caràcters que defineix un patró de cerca. Aquest patró es pot utilitzar per trobar coincidències en cadenes de text.

Sintaxi Bàsica

Les expressions regulars en Perl es defineixen entre barres inclinades / i es poden utilitzar amb operadors com =~ per a la coincidència i !~ per a la no coincidència.

my $text = "Hola, món!";
if ($text =~ /Hola/) {
    print "Coincidència trobada!\n";
}

Metacaràcters

Els metacaràcters són caràcters especials que tenen significats específics en les expressions regulars. Alguns dels més comuns són:

Metacaràcter Significat
. Qualsevol caràcter excepte el salt de línia
^ Inici de la cadena
$ Final de la cadena
* Zero o més repeticions
+ Una o més repeticions
? Zero o una repetició
\d Qualsevol dígit
\w Qualsevol caràcter de paraula
\s Qualsevol espai en blanc

Utilització en Perl

Coincidència de Patrons

Per comprovar si una cadena coincideix amb un patró, utilitzem l'operador =~.

my $text = "123abc";
if ($text =~ /\d+/) {
    print "Conté dígits!\n";
}

Substitució de Patrons

Per substituir un patró en una cadena, utilitzem l'operador s///.

my $text = "Hola, món!";
$text =~ s/món/Perl/;
print "$text\n";  # Sortida: Hola, Perl!

Captura de Grups

Podem capturar parts d'una cadena utilitzant parèntesis ().

my $text = "El preu és 100 dòlars";
if ($text =~ /(\d+)/) {
    print "El preu és $1 dòlars\n";  # $1 conté "100"
}

Exemples Pràctics

Exemple 1: Validació d'un Correu Electrònic

my $email = "[email protected]";
if ($email =~ /^[\w\.-]+@[\w\.-]+\.\w+$/) {
    print "Correu electrònic vàlid\n";
} else {
    print "Correu electrònic invàlid\n";
}

Exemple 2: Extracció de Números de Telèfon

my $text = "Contacta'ns al 123-456-7890 o 987-654-3210.";
while ($text =~ /(\d{3}-\d{3}-\d{4})/g) {
    print "Número de telèfon trobat: $1\n";
}

Exercicis Pràctics

Exercici 1: Validació de Codis Postals

Escriu una expressió regular per validar codis postals de 5 dígits.

my $codi_postal = "08001";
if ($codi_postal =~ /^\d{5}$/) {
    print "Codi postal vàlid\n";
} else {
    print "Codi postal invàlid\n";
}

Exercici 2: Substitució de Dates

Escriu un programa que substitueixi les dates en format dd/mm/yyyy per yyyy-mm-dd.

my $text = "La data és 25/12/2023.";
$text =~ s/(\d{2})\/(\d{2})\/(\d{4})/$3-$2-$1/;
print "$text\n";  # Sortida: La data és 2023-12-25.

Errors Comuns i Consells

Error Comú: No Escapar Metacaràcters

Quan utilitzem metacaràcters com . o * en una expressió regular, hem d'escapar-los si volem que es tractin com a caràcters literals.

my $text = "www.exemple.com";
if ($text =~ /www\.exemple\.com/) {
    print "URL vàlida\n";
}

Consell: Utilitza qr// per a Expressions Regulars Complexes

Per a expressions regulars complexes, utilitza qr// per millorar la llegibilitat.

my $pattern = qr/^\d{3}-\d{3}-\d{4}$/;
my $phone = "123-456-7890";
if ($phone =~ $pattern) {
    print "Número de telèfon vàlid\n";
}

Conclusió

Les expressions regulars són una eina essencial per a la manipulació de text en Perl. Hem après els conceptes bàsics, com utilitzar-les per a la coincidència i substitució de patrons, i hem vist alguns exemples pràctics. Amb la pràctica, les expressions regulars es convertiran en una part natural del teu arsenal de programació en Perl.

© Copyright 2024. Tots els drets reservats