Perl/Espressioni regolari (oltre): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 4:
=== Prima , Match , Dopo ===
Quando chiediamo di fare un'operazione di match
$` contiene quello che c'è prima
$& contiene il match
Riga 52:
=== Raggruppare ===
Oltre alle variabili precedenti le espressioni regolari consentono di fare dei raggruppamenti
Vediamo allora come migliorare l'esempio precedente aggiungendo il caso di estrarre anche " vitavita " , " vitavita!! " e " vitavita? ".
L'espressione regolare in questo caso diventa : "\s+(vita)+[\s.!?]+" ciò che si trova fra parentesi viene trattato dal moltiplicatore come se fosse un'unica entità.
Riga 107:
Se si usano nell'espressione regolare occorre indicarli come \X dove X è una cifra.
Se si usano fuori dall'espressione regolare allora vengono memorizzati in $X dove X è una cifra.
Vediamo un esempio: voglio sapere se la parola "stringa" è presente due volte all'interno della frase.
L'espressione regolare potrebbe essere la seguente: "(stringa).*\1"
$stringa = "questa è la stringa di test e rimane una stringa !";
Riga 156:
if ( $stringa =~ m/\s(?:\w{4,4})+\s/ )
{
print "la stringa -$stringa- contiene una parola
print "parola è $&\n";
}
che produce:
la stringa -io contengo una parola di soli quattro caratteri- contiene una parola
parola è contengo
Riga 167:
Se si vuole cercare qualcosa che si trova all'''inizio'' della stringa occorre mettere come primo carattere il carattere ^.
Se si vuole cercare qualcosa che si trova
Se volessi cercare la parola vita all'inizio della stringa (ma non in mezzo!) l'espressione regolare potrebbe essere
Vediamo un esempio:
Riga 232:
In questa sezione si parla del separatore di parola.
Con questo termine si indica il punto di inizio/fine di una parola. Negli esempi precedenti si è utilizzato lo spazio come elemento che separa una parola dalla successiva. Esiste un marcatore "più" preciso :
\b indica la ''sequenza'' \W\w o \w\W e si posiziona "nel mezzo".
\B è tutto quello che non è il \b
Occorre però capirne bene la sua utilità.
Con il separatore la parola viene già considerata e separata ( caso di /b ) o considerata e non separata ( caso /B ) dal resto delle parole. Infatti prendendo il punto in cui si verifica \w\W o \W\w la si è già considerata come estranea
Vediamo se con un esempio si chiarisce questo:
foreach $stringa ( "che vita... stare in pace con il mondo"
Riga 297:
In inglese "lookahead" significa che durante la verifica dell'espressione regolare ne viene verificata la contemporaneità di un'altra (positivo) oppure la non contemporaneità di un'altra (negativo).
La sintassi è la seguente :
(?= ) per la positiva
(?! ) per la negativa
Vediamo questo esempio :
Riga 342:
=== Alternativa ===
Si è visto nel caso dei caratteri che era possibile specificare dei caratteri diversi mettendoli fra []. Nel caso di espressioni complesse invece viene incontro il simbolo |. Attenzione che questo NON si riferisce al singolo carattere ma al raggruppamento nel quale è usato.
Se per esempio voglio tutte le frasi con la parola vita
foreach $stringa ( "che vita... stare in pace con il mondo"
Riga 403:
=== Sii minimale ===
Quando si usano i moltiplicatori di caratteri
Vediamone la sintassi
{min,max}? inizia dal numero minimo e poi incrementa fino al massimo
{min,}? inizia dal numero minimo e poi incrementa
Riga 437:
È possibile scrivere una espressione regolare in una variabile e poi sostituirla nel match oppure mettere una variabile nell'espressione regolare.
Vediamo come modificare l'esempio precedente che cerca la stessa
$stringa = "questa è la stringa di test e rimane una stringa questa !";
Riga 481:
=== commenti (in linea) ===
Dato che le espressioni regolari possono essere molto complicate, segnarsi degli appunti, per quando
Per poter far questo basta usare la sintassi (?# ... ).
Per esempio : (?# ATTENZIONE: questo è un commento per i posteri !)
|