[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 666.   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 666.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 666.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 666.3. Simboli speciali.

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

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

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 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome confronto_sintetico_tra_le_espressioni_160_regolari_171_real.htm

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

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory