[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]

155. Confronto sintetico tra le espressioni regolari «reali»

Date le diversità notevoli tra tutti i tipi di espressione regolare che si utilizzano in pratica con i programmi che ne fanno uso, vale la pena di riepilogare le differenze fondamentali tra lo standard POSIX e le realtà più importanti. In questo capitolo si raccolgono solo alcune tabelle di comparazione, che mostrano l'abbinamento tra diversi modelli di espressione compatibili. Le descrizioni sono scarne, tuttavia quello che si vede dovrebbe servire per collegare le cose, e dovrebbe permettere di comprendere quali siano le estensioni di ogni realizzazione.

BRE POSIX ERE POSIX BRE GNU ERE GNU Perl
escape \ \ \ \ \
ancora ^ ^ ^ ^ ^
ancora $ $ $ $ $
alternativa | \| | |
raggruppamento \(   \) (   ) \(   \) (   ) (   )
elenco [   ] [   ] [   ] [   ] [   ]
riferimento \n \n \n \n

Tabella 155.1: Confronto tra gli operatori fondamentali.

BRE POSIX ERE POSIX BRE GNU ERE GNU Perl
sequenze xy... xy... xy... xy... xy...
intervalli x-y x-y x-y x-y x-y
elementi di collazione [.   .] [.   .]
caratteri equivalenti [=   =] [=   =]
classi di caratteri [:   :] [:   :] [:   :] [:   :]

Tabella 155.2: Confronto tra gli operatori interni alle espressioni tra parentesi quadre.

BRE POSIX ERE POSIX BRE GNU ERE GNU Perl
[[:alnum:]_] [[:alnum:]_] \w \w \w
[^[:alnum:]_] [^[:alnum:]_] \W \W \W
inizio di parola \< \<
fine di parola \> \>
inizio o fine parola \b \b \b
interno di una parola \B \B \B
[[:blank:]] [[:blank:]] [[:blank:]] [[:blank:]] \s
[^[:blank:]] [^[:blank:]] [^[:blank:]] [^[:blank:]] \S
[[:digit:]] [[:digit:]] [[:digit:]] [[:digit:]] \d
[^[:digit:]] [^[:digit:]] [^[:digit:]] [^[:digit:]] \D

Tabella 155.3: Simboli speciali.

BRE POSIX ERE POSIX BRE GNU ERE GNU Perl
x* x* x* x* x*
il minimo di x* x*?
x? x\? x? x?
il minimo di x? x??
x+ x\+ x+ x+
il minimo di x+ x+?
x\{n\} x{n} x\{n\} x{n} x\{n\}
x\{n,\} x{n,} x\{n,\} x{n,} x\{n,\}
il minimo di x{n,} x{n,}?
x\{n,m\} x{n,m} x\{n,m\} x{n,m} x{n,m}
il minimo di x{n,m} x{n,m}?

Tabella 155.4: Operatori di ripetizione.

In generale, si può osservare che i programmi GNU, e anche Perl, non permettono l'indicazione di simboli di collazione, e nemmeno di classi di equivalenza. Inoltre, Perl non dispone nemmeno delle classi di caratteri. Per ovviare a questi inconvenienti, si utilizzano invece delle sequenze di escape.

A differenza di ciò che si vede di solito, Perl introduce un concetto nuovo: la corrispondenza minima di un'espressione regolare. Questo può essere molto importante in Perl, quando si delimitano delle sottoespressioni per estrapolare delle parti differenti di una stringa.

---------------------------

Appunti Linux 1999.09.21 --- Copyright © 1997-1999 Daniele Giacomini --  daniele @ pluto.linux.it


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]