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.
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 =~
.
Substitució de Patrons
Per substituir un patró en una cadena, utilitzem l'operador s///
.
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.
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.
Curs de Programació en Perl
Mòdul 1: Introducció al Perl
Mòdul 2: Programació Bàsica en Perl
Mòdul 3: Treballant amb Dades
Mòdul 4: Programació Intermèdia en Perl
Mòdul 5: Programació Avançada en Perl
- Expressions Regulars Avançades
- Interacció amb Bases de Dades amb DBI
- Programació Web amb Perl
- Multifil