<< Back

Regex: il punto

Il RegEx (Regular Expression) è un linguaggio per descrivere la sintassi di una stringa di testo. Grazie al RegEx è possibile effettuare ricerche e sostituzioni all’interno di stringhe di testo, costruendo delle “formule/espressioni” talmente generiche che rendono un qualsiasi testo un testo con una struttura regolare.

Che significa quello che ho scritto? Effettivamente è quasi più complicato da spiegare che da capire. Proviamo con un esempio pratico.

Oggi vedremo il ruolo del punto “.” nelle espressioni regolari. (Le espressioni regolari variano sensibilmente a seconda del linguaggio usato. Alteryx usa il linguaggio Perl, quindi se volete cercare info sul web, prediligete tutorial e articoli che parlino del regex in Perl.)

Il punto significa un qualsiasi carattere.

Tutto tranne il carattere “n = nuova riga/vai a capo”. Lettere, numeri, simboli, spazi, tab…

Proprio per la sua generalità, si presta bene quando abbiamo intenzione di studiare, non tanto cosa ci sia scritto nelle nostre stringhe, ma la posizione degli elementi. Un esempio reale poterbbe essere il codice fiscale.

Gli esempi qui sotto sono fatti utilizzando il metodo “Tokenize” del RegEx Tool di Alteryx, che crea nuove colonne quando una parte di stringa corrisponde all’espressione dichiarata.

STRINGA ESPRESSIONE RISULTATO
FRRFRC83L53B041T .. | FR | RF | RC | 83 | L5 | 3B | 04 | 1T |
FRRFRC83L53B041T (.). | F | R | R | 8 | L | 3 | 0 | 1 |
FRRFRC83L53B041T .(.) | R | F | C | 3 | 5 | B | 4 | T |
FRRFRC83L53B041T .(.). | R | R | 3 | 3 | 4 |
  1. Crea una colonna ogni 2 caratteri e ci mostra i due caratteri.
  2. Crea una colonna ogni 2 caratteri, ma ci mostra solo il carattere in posizione dispari.
  3. Crea una colonna ogni 2 caratteri, ma ci mostra solo il caratere in posizione pari.
  4. Crea una colonna ogni 3 caratteri, ma ci mostra solo il carattere in posizione 2 (su 3).

Come potete vedere, al punto non interessa se i caratteri sono numeri, lettere, simboli, spazi, ecc, ecc, ecc… gli vanno bene tutti.

Perché vi ho mostrato proprio questi esempi? Perché un caso reale potrebbe essere la necessità di controllare che un codice fiscale sia vero. E per farlo bisogna controllare l’ultimo carattere, il carattere di controllo. E per una problematica del genere il regex e il punto ci possono essere d’aiuto.

I 15 caratteri precedenti a quello di controllo, a seconda che occupino una posizione di ordine pari o dispari, vengono convertiti in un valore numerico fisso, stabilito da una tabella di corrispondenze. La somma dei valori numerici viene divisa per 26. Il carattere di controllo si ottiene convertendo il resto della divisione nel carattere alfabetico ad esso corrispondente, stabilito sempre da una tabella di valori fissi.

  • Somma dei caratteri in posizione dispari (60)
  • Somma dei caratteri in posizione pari. (37)
  • Somma totale, pari+dispari. (97)
  • Somma totale/26 (3,73)
  • Resto (19) –> [97-(3*26)=19]
  • 19 = T

Il mio codice fiscale è giusto!

Scarica il workflow d’esempio.

Mandalo in esecuzione per vedere come reagisce il RegEx tool alle diverse espressioni. Troverai anche un workflow per controllare la veridicità dei CF usando quanto imparato oggi sulle espressioni regolari e i punti, e anche un altro esempio, per suddividere il codice fiscale nelle parti di cui è composto (Cognome|Nome|Anno|Mese|Giorno|Comune|Controllo).

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.