I set di caratteri nelle regex
I set di caratteri sono usati in un'espressione regolare per individuare un gruppo di caratteri in una data posizione. Il set di caratteri è racchiuso tra parentesi quadre.
Tra parentesi quadre si può indicare l'elenco dei caratteri ammessi alla selezione ( es. [abcde] ), un intervallo di caratteri ( es. [a-z] ) e/o una negazione per escluderne alcuni ( es. [a-z^xy] ).
Ecco alcuni esempi pratici.
Come selezionare un gruppo di caratteri
In un testo voglio individuare i termini "viale" e "Viale".
Utilizzando i set di caratteri posso scrivere l'espressione regolare in questo modo [vV]iale.
Il matching seleziona le stringhe "iale" che cominciano con "v" oppure con "V".
Nota. In questo modo ottengo lo stesso risultato della regex "viale|Viale" ma l'espressione è più corta. Se le combinazioni della stringa da cercare sono molte, il set di carattere accorcia l'espressione regolare a pochi caratteri.
Come selezionare qualsiasi lettera
Nel testo seguente voglio cercare tutti i caratteri dell'alfabeto.
Posso scrivere nel seguente modo [a-z].
Il trattino è il separatore tra la prima (a) e l'ultima lettera (z) dell'insieme dei caratteri ammessi.
In questo caso non ho espressamente indicato tutti i caratteri ma ho usato un intervallo.
Nota. Se avessi dovuto indicare espressamente tutti i caratteri ammessi, avrei dovuto scrivere [abcdefghijklmnopqrstuvwxyz]. Lo stesso risultato lo ottengo con la forma contratta [a-z].
C'è però un problema, la precedente regex seleziona soltanto le lettere minuscole [a-z].
Per selezionare anche il gruppo delle lettere maiuscole, devo aggiungere nel gruppo di caratteri un altro intervallo [A-Z].
Ora l'espressione regolare seleziona correttamente tutte le lettere dell'alfabeto presenti nel testo.
Come selezionare qualsiasi lettera o numero
Per selezionare sia le lettere che i numeri, posso scrivere la regex con tre intervalli.
L'intervallo a-z seleziona le lettere minuscole, l'intervallo A-Z le lettere maiuscole e, infine, l'intervallo 0-9 i numeri.
Come escludere un carattere
In alcuni casi potrebbe essere necessario escludere uno o più caratteri dalla selezione. Si può fare tramite la negazione ^.
Ad esempio, voglio selezionare qualsiasi carattere tranne i numeri.
Posso scrivere nel seguente modo [^0-9].
L'espressione regolare seleziona tutti i caratteri del testo tranne i numeri.
Importante. L'accento circonflesso ^ funziona soltanto quando si trova alla prima posizione dopo l'apertura della parentesi quadra. Se si trova in un'altra posizione ( seconda, terza, ecc. ) viene considerato come un carattere qualsiasi. Ad esempio, la regex [a-z^b] non esclude il carattere b dalla selezione a-z, bensì aggiunge il carattere ^ al matching.