 |
stringhe:
confronto, sostituzione e interpolazione,
espressioni regolari
|
$stringa =~ /espressione regolare/
questa istruzione è vera
se l'espressione regolare si verifica in $stringa
confronto semplice
$stringa1 = "Primo Punto";
$stringa2 = "piano primo";
$stringa1 =~ /primo/ falsa
$stringa2 =~ /primo/ vera
caratteri speciali nelle espressioni regolari
. qualunque singolo carattere (eccetto new line)
^ inizio stringa
$ fine stringa
* zero o più ripetizioni del carattere che precede
+ uno o più ripetizioni del carattere che precede
? zero o una ripetizione del carattere che precede
esempi:
t.e vero per: the, tre, tle; falso per te, tale
^fa vero se la stringa comincia per fa
e$ vero se la stringa finisce per e
dal* vero per dal, dall
^$ vero se la stringa è vuota
.* vero se la stringa non contiene new line
gruppi di caratteri
[a-z] qualunque lettera miniscola
[a-zA-Z] qualunque lettera
[^a-z] nessuna lettera minuscola
[aeiou] solo vocali minuscole
[A-Z]+ qualunque parola in lettere maiuscole
( ) raggruppamento di caratteri
| or
caratteri speciali
\n new line
\t tabulatore
\w qualunque carattere alfanumerico (equivale a [a-zA-Z0-9])
\W qualunque carattere non alfanumerico (equivale a [^a-zA-Z0-9])
\d qualunque cifra (equivale a [0-9])
\D qualunque carattere non cifra (equivale a [^0-9])
\s qualunque carattere spazio (spazio, tab, new line)
\S qualunque carattere non spazio (spazio, tab, new line)
\b confine di parola
protezione dei caratteri speciali
\| \[ \] \( \) \* \^ \/ \\
ESEMPI
/= *0/ vera per =0, = 0, = 0
/= *0\.0*/ vera per =0., =0.0, =0.00, = 0., = 0.00, = 0.0
ESTRAZIONI
i match sono memorizzati nelle variabili $1, $2, ...
Se la stringa corrente è Subject: xxxxxx
if (/^Subject: (.*)/) { $subject = $1 }
Se la stringa corrente è una data del tipo:
Date: 1 Apr 95 12:34:56 GMT
/^Date: (\d+) (\w+) (\d+) (\d+):(\d+):(\d+) (.*)$/;
$day =$1;
$month =$2;
...
$second =$6;
oppure:
@field = /^Date: (\d+) (\w+) (\d+) (\d+):(\d+):(\d+) (.*)$/;
SOSTITUZIONE
$stringa =~ s/giorgio/Giorgio/g
codici speciali delle espressioni regolari
\1,\2,...,\9 nella sostituzione
$1,$2,...,$9 nel resto del programma
s/^(.)(.*)(.)$/\3\2\1/
scambia il primo carattere con l'ultimo,
infatti \1 contiene il primo carattere, \3 l'ultimo, \2 il resto
TRADUZIONE
$stringa =~ tr/a-z/A-Z/
$conta = ($stringa =~ tr/*/*/)
esercizi
- contare e numerare le righe che contengono la lettera x,
la stringa dal, la stringa dal o la stringa Dal
- contare e visualizzare le righe con lettere doppie
evidenziando le doppie tra parentesi
- contare e visualizzare le righe che contengono il primo argomento
- visualizzare le righe che contengono il primo argomento
rispetto al contesto, allineando la parola al centro
indice - esempi
CICAIA
dell'Università di Modena
*
PoP di Modena del servizio