Immagina questo: sei un impavido esploratore di dati, che si avventura nelle profondità della natura selvaggia dei dati grezzi. Armato del tuo fidato foglio di calcolo e di una tazza di caffè, ti imbarchi in una missione per estrarre informazioni significative. Ma ahimè, ciò che incontri è una giungla di formattazione incoerente, simboli criptici ed errori di battitura che sembrano avere vita propria. Non temere, intrepido manipolatore di dati, perché in questo regno caotico ti aspetta un'arma segreta: le espressioni regolari , il mantello da supereroe della pulizia dei dati.
Cos'è un'espressione regolare?
Fondamentalmente, un'espressione regolare, comunemente nota come regex , è una potente sequenza di caratteri che definisce un modello di ricerca. È uno strumento versatile utilizzato in vari linguaggi di programmazione ed editor di testo per manipolare e abbinare stringhe di testo in base a modelli o regole specifici . Le espressioni regolari consentono di esprimere modelli di ricerca complessi in modo conciso, semplificando la ricerca, l'estrazione o la modifica di parti specifiche dei dati di testo. Combinando caratteri, metacaratteri e quantificatori, puoi creare modelli regex che corrispondono a sequenze, caratteri o strutture anche più complesse specifiche all'interno di un corpo di testo più ampio. Con la loro vasta gamma di applicazioni, le espressioni regolari sono diventate una risorsa inestimabile per le attività di pulizia dei dati, elaborazione del testo e riconoscimento di modelli.
Regex in JMP
All'interno di JMP, è possibile accedere e personalizzare le espressioni regolari tramite il triangolo rosso situato in Esplora testo > Opzioni di analisi > Personalizza Regex. Diverse espressioni regolari sono prontamente disponibili per l'uso, come HTML Link Grabber e l'evidenziatore di Numbers .

Puoi personalizzare le espressioni regolari all'internoJMP.
Sebbene le espressioni integrate siano utili, la pulizia dei dati può richiedere espressioni più personalizzate che si adattano meglio al set di dati. Diamo un'occhiata a un semplice esempio, come rimuovere tutti i numeri in una stringa di testo. L'espressione regolare "\d+" eseguirà questo compito. Questa espressione utilizza il metacarattere "\d" per corrispondere a tutte le cifre (0-9) e il quantificatore "+" per indicare che devono corrispondere una o più cifre. Se applichiamo questa espressione regolare alla stringa "Ho 5 mele e 10 arance", verranno identificati i numeri "5" e "10". Sostituendo queste cifre con una stringa vuota, hai effettivamente ripulito i tuoi dati da tutti i numeri presenti.
Analizziamo l' HTML Link Grabber per spiegare un esempio più complesso. Questa espressione regolare incorporata in JMP è la seguente:
<A>]*?)\3[^>]*)|(\s*[a-z]+\s*=\s*('|")([^>]*?)\6))*\s*></A>
Ciascuna parte significativa dell'espressione di cui sopra è riassunta nella tabella seguente:
| < d>
| Questo metacarattere cerca il tag di ancoraggio di apertura in HTML che indica un collegamento ipertestuale. |
| href\s*=\s*('|") |
Questa sezione corrisponde all'attributo "href" seguito da un segno di uguale e spazi opzionali, quindi da una virgoletta singola (') o da una virgoletta doppia ("). Cattura la virgoletta di apertura in un riferimento all'indietro. |
| ([^>]*?) |
Corrisponde a qualsiasi carattere che non sia la parentesi angolare di chiusura (>). Ancora più importante, cattura l'URL che è lo scopo principale di questa espressione. Si noti che questa sezione è simile agli specificatori di formato nella programmazione C. |
| (\s*[az]+\s*=\s*('|")([^>]*?)\6) |
Questo modello corrisponde a qualsiasi attributo aggiuntivo all'interno del tag di ancoraggio. Cattura il nome dell'attributo, un segno di uguale, spazi opzionali, il valore dell'attributo (tra virgolette) e garantisce che la virgoletta di chiusura corrisponda alla virgoletta di apertura. |
(Vedi Personalizzare Regex nell'editor delle espressioni regolari (jmp.com) per ulteriori informazioni)
Sebbene questi attributi e modelli possano sembrare complessi, sono disponibili molta documentazione e risorse per apprendere e comprendere cosa rappresenta ciascuna bandiera.
Applicazione di espressioni regolari
Quindi ora che sappiamo esattamente cos'è e cosa può fare la regex, dove è più utile?
Beh, è difficile restringere il campo a una sola applicazione, ma ti mostrerò un esempio di filtraggio dei dati che ho eseguito per un progetto di analisi del testo che copriva i dati della sezione discussioni della comunità degli utenti JMP. L'obiettivo finale di questo progetto era trovare i termini e le frasi più comunemente utilizzati pubblicati nelle discussioni nella comunità degli utenti.
Di seguito è riportato un esempio tratto da uno solo degli oltre 48.000 commenti di discussione. Tieni presente che la formattazione HTML e lo scripting JSL rendono molto difficile determinare il vocabolario utilizzato nel commento originale.

Campione di dati prima della pulizia delle espressioni regolari.
Il completamento della pulizia manuale di questi termini e della formattazione potrebbe richiedere mesi o addirittura anni, ma con l'uso di poche espressioni regolari, la pulizia può essere eseguita istantaneamente.
Per iniziare, volevo rimuovere qualsiasi contenuto del linguaggio di scripting JSL all'interno della discussione. Per raggiungere questo obiettivo, ho utilizzato la seguente regex:
<CODE class=" language-jsl">[\s\S]*?<\/CODE>|
|((([€¥₩£\$]|r\$)\s{0,2}[\.,]?[0-9][\.,0-9]*)|([\.,]?[0-9][\.,0-9]*\s{0,2}([€¥₩£\$]|r\$)))
Successivamente, volevo rimuovere eventuali tag di formattazione HTML e CSS dai dati:
<[^>]*>
Infine, volevo rimuovere tutti i numeri, i decimali e le parole contenenti numeri:
\d+(\.\d+)?|\.\d+
Osservando lo stesso messaggio di esempio originale, puoi vedere di seguito come ciascuna espressione filtra i parametri specificati:

Dati filtrati. Le parole non filtrate sono evidenziate in giallo.
Esplorando i risultati
Una volta che abbiamo finito di filtrare le nostre espressioni personalizzate, come cambiano i nostri risultati? Diamo un'occhiata ai confronti affiancati delle nuvole di parole per il set di dati grezzi e non filtrati rispetto al set pulito da regex:
Vecchio (nessuna espressione regolare)
|
Nuovo (con regex)
|
|
|
Tieni presente che prima di utilizzare le espressioni regolari, i dati vengono riempiti con formattazione HTML, formattazione JSL e contenuto completamente non correlato. Ai fini della mia analisi, questi dati sono del tutto irrilevanti. Dopo aver utilizzato le espressioni regolari, i dati sono molto più utili per l'analisi e possono fornire risultati molto interessanti con un po' più di lavoro.
L'esecuzione di un'analisi degli argomenti sui dati puliti ha fornito i seguenti risultati su quali argomenti ricevono più comunemente risposta all'interno della comunità degli utenti, mostrati di seguito:

Analisi in cinque argomenti sui dati delle discussioni
I cinque argomenti forniti possono essere generalizzati in diverse categorie di domande poste dagli utenti:
- Argomento n. 1: Progettazione dell'esperimento (DOE)
- Argomento n.2: Modellazione predittiva e apprendimento automatico
- Argomento n. 3: risposte didattiche
- Argomento n. 4: formattazione e analisi dei dati
- Argomento n. 5: Programmazione e scripting
Corrispondenza del testo della colonna regex
Le espressioni regolari non sono limitate all'applicazione all'interno di una finestra di esplorazione del testo; puoi anche accedervi quando crei una nuova colonna di dati con una formula di stringa. Per accedervi, visualizzare Cols -> Utilità -> Nuova colonna per corrispondenza testo.

Regex è disponibile in qualsiasi colonna di testo di un file JMP.
Selezionando "Nuova colonna per corrispondenza testo" si aprirà la stessa finestra dell'editor regex di quella in Text Explorer. L'intero processo di data curation è esattamente lo stesso, tuttavia, il testo filtrato verrà ora formattato automaticamente in una nuova colonna, come mostrato nell'immagine seguente:

Lo stesso processo viene mostrato all'esterno di una finestra di Esplora testo.
Pensieri finali
Le espressioni regolari sono uno strumento indispensabile nel campo dell'esplorazione dei dati. Offrono una soluzione versatile per manipolare e abbinare stringhe di testo all'output desiderato. Con regex, possiamo sbloccare tutto il potenziale dei nostri dati.
Per ulteriori informazioni sulle espressioni regolari, vedere:
Customize Regex in the Regular Expression Editor (jmp.com)
Quantificatori nelle espressioni regolari | Microsoft Impara
Riferimento alle espressioni regolari (regular-expressions.info)
Funzione Regex (jmp.com)
Guida di JMP