Dopo aver letto un numero di domande/risposte nelle ultime settimane, ho visto l'uso di \d
in espressioni regolari perl commentate come non corrette. Come nelle versioni successive di perl \d
non corrisponde a [0-9]
, come \d
rappresenterà qualsiasi carattere Unicode con l'attributo digit e che [0-9]
rappresenta i caratteri "0", "1", "2", ..., '9'.Devo usare d o [0-9] per abbinare le cifre in un'espressione regolare Perl?
Apprezzo che in alcuni contesti [0-9]
sarà la cosa corretta da utilizzare e in altri \d
sarà. Mi stavo chiedendo quali persone ritengono sia l'impostazione predefinita corretta da utilizzare?
Personalmente trovo la notazione \d
molto succinta ed espressiva, mentre nel confronto [0-9]
è piuttosto ingombrante. Ma ho poca esperienza di fare codice multi-lingua, o piuttosto codice per linguaggi che non rientrano nell'intervallo di caratteri ASCII, e quindi può essere ingenuo.
ho notato
$find /System/Library/Perl/5.8.8/ -name \*pm | xargs grep '\\d' | wc -l
298
$find /System/Library/Perl/5.8.8/ -name \*pm | xargs grep '\[0-9\]' | wc -l
26
\ d può infatti corrispondere a più di 10 caratteri diversi, se applicato alle stringhe Unicode. – pts