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


Capitolo 3.   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, permettendo di comprendere quali sono 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 3.1. Confronto tra gli operatori fondamentali.

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

Tabella 3.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 3.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 3.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.

Informatica per il commercio elettronico 2000.11.04 --- Copyright © 2000 Daniele Giacomini --  daniele @ swlibero.org

Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome confronto_sintetico_tra_le_espressioni_regolari_laquo_reali_raquo.html

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