Les expressions regulars són una eina poderosa per a la manipulació de text en Perl. En aquest mòdul, explorarem les característiques avançades de les expressions regulars que et permetran escriure patrons més complexos i eficients.
Continguts
Revisió de Conceptes Bàsics
Abans d'endinsar-nos en les característiques avançades, fem una breu revisió dels conceptes bàsics de les expressions regulars en Perl.
En aquest exemple, el patró Hola
es busca dins de la cadena $text
.
Grups de Captura i Retroreferències
Grups de Captura
Els grups de captura permeten agrupar parts d'una expressió regular i accedir a elles posteriorment.
my $text = "Perl és genial!"; if ($text =~ /(Perl) és (genial)/) { print "Grup 1: $1\n"; # Perl print "Grup 2: $2\n"; # genial }
Retroreferències
Les retroreferències permeten referir-se a grups de captura dins de la mateixa expressió regular.
Avarícia i No Avarícia
Avarícia
Per defecte, els quantificadors en les expressions regulars són avariciosos, és a dir, intenten coincidir amb la major quantitat de text possible.
No Avarícia
Els quantificadors no avariciosos intenten coincidir amb la menor quantitat de text possible. S'afegeix un ?
després del quantificador.
Assertacions
Assertacions Positives
Les assertacions positives verifiquen que un patró existeix en una posició específica sense incloure'l en la coincidència.
my $text = "Perl és genial!"; if ($text =~ /Perl(?= és genial)/) { print "Assertació positiva trobada!\n"; # Perl }
Assertacions Negatives
Les assertacions negatives verifiquen que un patró no existeix en una posició específica.
my $text = "Perl és genial!"; if ($text =~ /Perl(?! és dolent)/) { print "Assertació negativa trobada!\n"; # Perl }
Modificadors d'Expressions Regulars
Els modificadors canvien el comportament de les expressions regulars.
Modificador i
Fa que la coincidència no distingeixi entre majúscules i minúscules.
my $text = "Perl és genial!"; if ($text =~ /perl/i) { print "Coincidència sense distingir majúscules i minúscules!\n"; # Perl }
Modificador s
Permet que el punt (.
) coincideixi amb noves línies.
my $text = "Perl\nés genial!"; if ($text =~ /Perl.*genial/s) { print "Coincidència amb noves línies!\n"; # Perl\nés genial }
Modificador m
Permet que ^
i $
coincideixin amb el començament i el final de cada línia, respectivament.
my $text = "Perl\nés genial!"; if ($text =~ /^és/m) { print "Coincidència al començament de la línia!\n"; # és }
Exercicis Pràctics
Exercici 1
Escriu una expressió regular que coincideixi amb una adreça de correu electrònic vàlida.
my $email = "[email protected]"; if ($email =~ /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/) { print "Adreça de correu electrònic vàlida!\n"; }
Exercici 2
Escriu una expressió regular que coincideixi amb un número de telèfon en el format (123) 456-7890
.
my $phone = "(123) 456-7890"; if ($phone =~ /^\(\d{3}\) \d{3}-\d{4}$/) { print "Número de telèfon vàlid!\n"; }
Exercici 3
Escriu una expressió regular que coincideixi amb una data en el format DD/MM/YYYY
.
my $date = "31/12/2023"; if ($date =~ /^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/\d{4}$/) { print "Data vàlida!\n"; }
Conclusió
En aquest mòdul, hem explorat les característiques avançades de les expressions regulars en Perl, incloent grups de captura, retroreferències, avarícia i no avarícia, assertacions i modificadors. Amb aquests coneixements, podràs escriure patrons més complexos i eficients per a la manipulació de text.
En el proper mòdul, ens endinsarem en la interacció amb bases de dades utilitzant el mòdul DBI de 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