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);
