[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 317.   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.

Tabella 317.1. Confronto tra gli operatori fondamentali.

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

Tabella 317.2. Confronto tra gli operatori interni alle espressioni tra parentesi quadre.

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 317.3. Simboli speciali.

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 317.4. Operatori di ripetizione.

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}?

In generale, si può osservare che i programmi GNU e 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 di informatica libera 2003.01.01 --- Copyright © 2000-2003 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_.html

[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]