Successivo: , Precedente: , Su: Espressioni regolari   [Contenuti][Indice]


3.7 Operatori regexp propri di gawk

Il software GNU che ha a che fare con espressioni regolari comprende alcuni operatori regexp aggiuntivi. Questi operatori sono descritti in questa sezione e sono specificamente per gawk; non sono disponibili in altre implementazioni di awk. La maggior parte degli operatori aggiuntivi riguarda l’identificazione di parole. Ai nostri fini, una parola è una sequenza di uno o più lettere, cifre, o trattini bassi (‘_’):

\s

Corrisponde a ogni carattere bianco, come definito nella localizzazione corrente. Lo si può pensare come un’abbreviazione di ‘[[:space:]].

\S

Corrisponde a ogni carattere che non è uno spazio bianco, come definito nella localizzazione corrente. Lo si può pensare come un’abbreviazione di ‘[^[:space:]].

\w

Corrisponde a ogni carattere che componga una parola; ovvero, corrisponde a ogni lettera, cifra, o trattino basso. Lo si può pensare come un’abbreviazione di ‘[[:alnum:]_].

\W

Corrisponde a ogni carattere che non è parte di una parola. Lo si può pensare come un’abbreviazione di ‘[^[:alnum:]_].

\<

Individua la stringa nulla all’inizio di una parola. Per esempio, /\<via/ individua ‘via’ ma non ‘funivia’.

\>

Individua la stringa nulla alla fine di una parola. Per esempio, /via\>/ individua ‘via’ ma non ‘viadotto’.

\y

Individua la stringa nulla o alla fine o all’inizio di una parola. (cioè, il limite di una parola - boundary in inglese). Per esempio, ‘\yradar?\y’ individua sia ‘rada’ che ‘radar’, come parole separate.

\B

Individua la stringa nulla che ricorre all’interno di una parola. Per esempio, /\Bora\B/ individua ‘Colorado’, ma non individua ‘che ora è’. ‘\B’ è essenzialmente l’opposto di ‘\y’.

Ci sono due altri operatori che operano sui buffer. In Emacs un buffer è, naturalmente, un buffer di Emacs. In altri programmi GNU, fra cui gawk, le routine di libreria delle regexp considerano come buffer l’intera stringa su cui effettuare il confronto. Gli operatori sono:

\`

Individua la stringa nulla che occorre all’inizio di un buffer (di una stringa)

\'

Individua la stringa nulla che occorre alla fine di un buffer (di una stringa)

Poiché ‘^’ e ‘$’ si riferiscono sempre all’inizio e alla fine di stringhe, questi operatori non aggiungono nuove funzionalità ad awk. Sono inclusi per compatibilità con altro software GNU.

In altro software GNU, l’operatore di limite-di-parola è ‘\b’. Questo, comunque, è in conflitto con la definizione, nel linguaggio awk, di ‘\b’ come backspace, quindi gawk usa una lettera differente. Un metodo alternativo sarebbe stato di richiedere due barre inverse negli operatori GNU, ma questo è stato ritenuto troppo arzigogolato. Il metodo corrente di usare ‘\y’ al posto del ‘\b’ di GNU sembra essere il male minore.

Le varie opzioni sulla riga di comando (vedi la sezione Opzioni sulla riga di comando) controllano come gawk interpreta i caratteri nelle regexp:

Nessuna opzione

Per default, gawk fornisce tutte le funzionalità delle regexp POSIX e gli operatori regexp GNU predecentemente descritti. Sono descritti in Operatori di espressioni regolari.

--posix

Sono ammesse solo le regexp POSIX; gli operatori GNU non sono speciali (p.es., ‘\w’ individua una semplice lettera ‘w’). Le espressioni di intervallo sono ammesse.

--traditional

Le regexp Unix tradizionali di awk sono ammesse. Gli operatori GNU non sono speciali, e le espressioni di intervallo non sono ammesse. Le classi di caratteri POSIX (‘[[:alnum:]]’, etc.) sono ammesse, poiché BWK awk le prevede. I caratteri descritti usando sequenze di protezione ottali ed esadecimali sono trattati letteralmente, anche se rappresentano metacaratteri di regexp.

--re-interval

Sono consentite espressioni di intervallo in regexp, se --traditional è stata specificata. Altrimenti, le espressioni di intervallo sono disponibili per default.


Successivo: , Precedente: , Su: Espressioni regolari   [Contenuti][Indice]