Sfogliando alcuni file ho trovato un listato con alcune regexp (espressioni regolari) molto banali per far pratica con il linguaggio interpretato Perl; posto di seguito il contenuto del file e le definizioni di alcuni simboli speciali, per chi necessità di una finestra veloce e semi-completa sull’utilizzo delle regexp usando il suddetto linguaggio.

Simboli speciali
.     Indica un solo carattere di qualunque tipo ma non un carattere di newline (\n)
^     L'inizio di una linea/sequenza
$     La fine di uan linea/sequenza
*     Zero o più caratteri di qualunque tipo
+     Uno o più caratteri di qualunque tipo
?     Zero o un carattere di qualunque tipo
\n    Carattere di nuova linea
\t    Carattere di tabulazione
\s    Qualunque carattere di spazio, tabulazione, newline...
\w    Qualunque carattere alfanumerico (quindi qualunque carattere da 0~9 e da a~zA~Z)
\W    La negazione di \w
\d    Qualunque carattere numerico (quindi qualunque carattere da 0~9)
\D    La negazione di \d

Si possono creare dei pattern utilizzando le parentesi tonde () e la pipe | rappresentate l'unione (OR)
(ae)            Individua la stringa "ae"
(a|e)lollo      Individua la stringa "alollo" O la stringa "elollo"
(a|e+)lollo     Individua la stringa "alollo" O le stringhe "elollo", "eelollo", "eeelollo" etc...

#!/usr/bin/perl

my $in = open IN, "< text2.txt" or die "CANNOT";
@_ = <IN>;

if($in) {
 foreach (@_) {
 # /Piove.*assurdo/

 # /ho +le/i
 # cerca il pattern che inizia con 'ho', che continua con almeno 1 spazio e subito dopo 'le'

 # /in ?(.*)/i
 # cerca il pattern che inizia con 'in' e che può avere o non può avere
 # uno spazio subito dopo e continua con qualsiasi cosa

 # /(.)\1/i
 # cerca il pattern che contiene un qualsiasi carattere e che subito dopo
 # ha lo stesso carattere (\1 = ripetere l'elemento contenuto
 # nella parentesi numero 1; in questo caso, cerca le doppie)

 # /(.)(.)\2\1/i
 # cerca un pattern palindromo! abbiamo due caratteri (.)(.):
 # \2 significa che dobbiam trovare un pattern dove il carattere nella seconda parentesi
 # si ripete;
 # \1 significa che subito dopo la ripetizione della seconda parentesi si deve ripetere
 # il carattere nella prima parentesi
 # ESEMPIO: stringa ABBA
 # (.)(.) INDICA I NOSTRI PRIMI DUE CARATTERI: AB
 # \2 INDICA CHE IL CARATTERE B SI DEVE RIPETERE: ABB
 # \1 INDICA CHE IL CARATTERE A SI DEVE RIPETERE: ABBA

 # /(\w+):\s)/
 # cerca il pattern con una stringa prima del carattere : e subito dopo uno spazio;
 # la peculiarit di questo esempio è che la stringa prima del carattere sarà memorizzata in $1

 # /(\d)+\s?(?:\+|\-)\s?i\*?(\d)+/i
 # riconosce i numeri complessi nella forma: x+iy, x + iy o i*y

 if(/(\d)+\s?(?:\+|\-)\s?i\*?(\d)+/i) {
     print "OK\n";
     print "it matches on: " . $_ . "\n";
     print "the variable was: $1 and $2\n";
 }
 }

} else {
 print "DEAD";
}

close(IN);