Cosa sono e come funzionano le Regular Expressions

Cos’è una regular expression (regex o regexp)? È un pattern, costituito da una sequenza di caratteri, che va ricercato all’interno di una stringa (pattern matching testuale). Una funzione regexp è una funzione che appunto cerca il pattern in una stringa.
Una volta trovato, il pattern può essere sostituito (replace) o solo identificato per altri scopi.
Le funzioni Regular Expressions (o abbreviato regexp) sono in genere usate in computer science per string processing, data validation, parsing e altri ambiti. Sono presenti in molti linguaggi, tra cui Python, R e Tableau. In Tableau, le regexp vengono principalmente usate per pulire dati o per verificare certe condizioni.

 

Funzione Regular Expression: i componenti

I componenti sempre presenti in una funzione regexp sono:

  • Stringa: può anche essere un numerico di fatto, ma va messo il datatype stringa;
  • Pattern: sequenza da ricercare all’interno della stringa. Il pattern può contenere, oltre ai caratteri classici, anche caratteri particolari:
  1. metacaratteri: caratteri a cui è stato assegnato un significato preciso. Ad esempio, il carattere ‘\s’ matcha uno spazio bianco;
  2. quantifiers: specificano quante volte il carattere precedente è ripetuto: ad esempio il carattere ‘*’ indica che il carattere precedente può essere preso da zero a più volte -> ab* matcha “a”, “ab”, “abb” e altre infinite volte la lettera b;
  3. caratteri jolly (wildcard): ad esempio, il punto ‘.’ matcha qualunque carattere;
  4. operatori: ad esempio il carattere ‘|’ identifica l’operatore OR;
  5. parentesi: differenti tipi di parentesi rivestono significati diversi. Le parentesi definiscono delle porzioni del pattern chiamate “capture groups”: ad esempio, il pattern (ab)* matcha “ab”, “abab”, “ababab” e altre infinite ripetizioni di “ab”, ma non “a” oppure “abb”.

    I caratteri particolari sopra elencati sono definiti da alcuni standards. In Tableau, se la datasource è in live e quindi le regexp lavorano direttamente sulla datasource, lo standard usato dipende dalla datasource. Se la fonte è in extract, Tableau si basa sullo standard “International Components for Unicode (ICU)”, la cui documentazione completa si trova qui a questo link.

Alla stringa e al pattern possono essere aggiunti altri componenti alla funzione, li vediamo per quanto riguarda Tableau.

 

Le 4 Funzioni regexp in Tableau

In Tableau ci sono 4 funzioni regexp:

  • REGEXP_REPLACE(string, pattern, replacement): crea una nuova stringa con il pattern sostituito dal replacement

Funzioni Regular Expressions Tableau -1

  • REGEXP_MATCH(string, pattern): restituisce un booleano, che è true se il pattern è trovato nella stringa

  • REGEXP_EXTRACT(string, pattern): restituisce la parte di stringa che corrisponde al capture group, di conseguenza nel momento in cui si definisce la regexp_extract occorre sempre mettere le parentesi tonde attorno alla parte di pattern di interesse, sapendo che la funzione ci restituirà solo il primo capture group nel caso di più capture groups, o all’intero pattern

Regex Expression Tableau 3

Quando viene restituita solo una parte del pattern, definito dal capture group, il risultato viene dato solo laddove il pattern intero è presente:

Regex Expression Tableau 6

Se non viene definito un capture group, la funzione non è corretta e non restituisce nulla:

Regex Expressions Tableau 7

  • REGEXP_EXTRACT_NTH(string, pattern, index): questa funzione è come la precedente ma si può specificare di prendere un capture group diverso dal primo, ma sempre un solo capture group alla volta.


In questo esempio con il pattern ‘(A)ar(on)’ vengono definiti due capture groups
: uno per la prima lettera ‘A’ e uno per le ultime due lettere ‘on’, separati da ‘ar’. Con index = 1 viene restituita la prima lettera, con index = 2 vengono restituite le ultime due lettere.

Regex Expressions TABLEAU8 Regex Expressions tableau 9

Se invece si mette index = 0 viene restituito il pattern intero (incluso ‘ar’):

Regex Expression 10

NOTA: Mentre la funzione REGEXP_REPLACE agisce su tutti match trovati nella stringa le funzioni REGEXP_EXTRACT e REGEXP_EXTRACT_NTH agiscono solo sul primo match nella stringa.

 

Qualche esempio pratico

Qui qualche esempio per voi:

  • REGEXP_REPLACE([Customer Name], ‘s’, ”) sostituisce tutte le ‘s’ nei nomi con un carattere vuoto (e non solo la prima ‘s’)

regexp Replace Tableau

REGEXP_EXTRACT([Customer Name], ‘(s)’) restituisce solo la prima ‘s’ nel nome

Regexp extract



Se ti sei perso i nostri articoli precedenti, puoi recuperarli sul nostro blog e continuare a seguirci sui nostri canali social LinkedIn, Facebook e Twitter!