Il 12 dicembre 2009 18.52, Milo Casagrande <milo(a)ubuntu.com> ha scritto:
Il 12 dicembre 2009 17.34, Guido Grazioli
<guido.grazioli(a)gmail.com> ha scritto:
>
> Quello che intendevo io, scendendo nel dettaglio tecnico, è
> che la classe posix (e mi sembra anche java, a memoria) delle
> regular expression per la punteggiatura
>
> [:punct:] -> [-!"#$%&'()*+,./:;<=>?@\[\\\]_`{|}~]
>
> *NON* contiene i caratteri «» , mentre contiene sia l'apice singolo che
> doppio. Se mi confermi che quando $LANG=it_IT oppure $LC_ALL=it
> la classe [:punct:] contiene anche «» allora non ci sono problemi.
> Nel caso contrario invece, parliamone.
Non possono esserci le caporali: quelli sono caratteri stampabili
ASCII (a 7 bit?), questi («») sono Unicode e le regular-expression
POSIX si basano su ASCII (o su una delle sue forme).
In ogni caso sei limitato: [a-z] non include le lettere accentate.
Non confondere Unicode con UTF-8, sono uno l'implementazione
dell'altro.
Sono convinto che le caporali *SIANO* nel latin1/iso8859-1, nota che
latin-1 != ascii (8 bit contro 7 bit, i 128 caratteri in più sono il
latin-1 supplement).
D'altra parte non tutti i caratteri ascii sono stampabili, e inoltre posix
NON è limitato all'ascii per regex, la limitazione è solo per i motori
PCRE (Perl Compatible Reg Ex)
http://www.regular-expressions.info/refflavors.html
Anzi i motori POSIX hanno le collation nel supporto unicode,
per cui [:alpha:] cattura à per a, e comunque hai [[=a=]] che
cattura entrambe.
Comunque ho investigato ultriorimente, e a parte vi che è PCRE (almeno
di default la versione distribuita con fedora), con perl e le GNU ERE
il carattere « (U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK)
viene correttamente catturato da [:punct:], anche senza impostare
LANG=it_IT, poichè Unicode definisce questo carattere come
Category: punctuation, initial quote
Per verificare:
# echo "Città del capo. <«|^" > test.txt
# grep --color -E "[[:punct:]]" test.txt
# grep --color -E "\w" test.txt
Io in definitiva sono convinto che «» non creino problemi, se nessun
altro ha niente da aggiungere direi che si possa procedere.
--
Guido Grazioli <guido.grazioli(a)gmail.com>
Via Parri 11 48011 - Alfonsine (RA)
Mobile: +39 347 1017202 (10-18)
Key FP = 7040 F398 0DED A737 7337 DAE1 12DC A698 5E81 2278
Linked in:
http://www.linkedin.com/in/guidograzioli