Successivo: , Precedente: , Su: regexp Perl   [Contenuti][Indice]


B.2 Circonflesso, dollaro, punto

All’esterno di una classe di caratteri, nella modalità di ricerca predefinita, il carattere accento circonflesso è una dichiarazione che è vera solo se il punto corrente di corrispondenza è all’inizio della stringa in esame. All’interno di una classe di caratteri, l’accento circonflesso ha un significato completamente differente (si veda sotto).

L’accento circonflesso non deve necessariamente essere il primo carattere di un’espressione regolare se sono verificate determinate condizioni, ma dovrebbe essere la prima cosa presente in ogni alternativa in cui compare, se l’espressione regolare dovrà mai corrispondere a quella alternativa. Se tutte le possibili alternative iniziano con un accento circonflesso, ossia se l’espressione cercata deve corrispondere solo alla parte iniziale della stringa in esame, l’espressione regolare è detta ancorata. (Ci sono anche altri modi per ancorare un’espressione regolare).

Il simbolo del dollaro è una dichiarazione che è vera solo se il punto corrente di corrispondenza è alla fine della stringa in esame, o subito prima di un carattere newline che sia l’ultimo carattere della stringa (per impostazione predefinita). Il simbolo del dollaro non deve necessariamente essere l’ultimo carattere nell’espressione regolare, in un certo numero di casi, ma dovrebbe essere l’ultimo elemento in ogni alternativa in cui appare. Il simbolo del dollaro non ha un significato speciale all’interno di una classe di caratteri.

I significati dell’accento circonflesso e del simbolo del dollaro cambiano se si usa l’opzione di modifica M. Se è questo il caso, essi corrispondono subito dopo e subito prima un carattere interno \n rispettivamente, oltre che corrispondere all’inizio e alla fine della stringa in esame. Per esempio l’espressione regolare /^abc$/ corrisponde nella stringa ‘def\nabc’ in modalità multiriga, ma non negli altri casi. Per questo motivo espressioni regolari che sono ancorate alla modalità riga singola perché tutte le alternative iniziano con ^ non sono ancorate in modalità multiriga.

Si noti che le sequenze \A, \Z, e \z possono essere usate per trovare corrispondenza all’inizio e alla fine della stringa in esame in entrambe le modalità, e se tutte le ramificazioni di un’espressione regolare iniziano con \A, essa è sempre ancorata, sia che il modificatore M sia impostato oppure no.

All’esterno di una classe di caratteri, un punto in un’espressione regolare corrisponde a qualsiasi carattere nella stringa in esame, inclusi quelli non stampabili, ma non (per impostazione predefinita) il newline. Se si usa il modificatore S i punti corrispondono anche ai newline. In realtà, la gestione del punto è del tutto indipendente da quella dell’accento circonflesso e dal segno del dollaro, l’unica relazione essendo che entrambi hanno a che fare coi caratteri newline. Il punto non ha un significato speciale in una classe di carattere.


Successivo: , Precedente: , Su: regexp Perl   [Contenuti][Indice]