[>a2246.html>] [<a2244.html<] [^a2.html^]
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.
Tabella 189.1. Confronto tra gli operatori fondamentali.
Tabella 189.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 189.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 189.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 di informatica libera 2000.07.31 --- Copyright © 2000 Daniele Giacomini -- daniele @ swlibero.org