Immagina questo: sei un impavido esploratore di dati, che si avventura in profondità nella natura selvaggia e selvaggia dei dati grezzi. Armato del tuo fidato foglio di calcolo e di una tazza di caffè, ti imbarchi in una ricerca per estrarre informazioni significative. Ma ahimè, ciò che incontri è una giungla di formattazione incoerente, simboli criptici ed errori di battitura che sembrano avere una vita propria. Non temere, intrepido manipolatore di dati, perché in questo regno caotico ti attende un'arma segreta: espressioni regolari , il mantello da supereroe della pulizia dei dati.
Cos'è un'espressione regolare?
Al centro, un'espressione regolare, comunemente nota come espressione regolare , è una potente sequenza di caratteri che definisce un modello di ricerca. È uno strumento versatile utilizzato in vari linguaggi di programmazione ed editor di testo manipolare e abbinare le stringhe di testo basato su schemi 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 di dati di testo. Combinando caratteri, metacaratteri e quantificatori, puoi creare pattern regex che corrispondono a sequenze, caratteri o strutture ancora più complesse all'interno di un corpo di testo più ampio. Con le loro applicazioni ad ampio raggio, le espressioni regolari sono diventate una risorsa inestimabile per le attività di pulizia dei dati, elaborazione del testo e riconoscimento dei modelli.
Regex in JMP
All'interno di JMP, le espressioni regolari sono accessibili e personalizzate tramite il triangolo rosso situato in Esplora testo -> Opzioni di analisi -> Personalizza Regex. Diverse espressioni regolari sono prontamente disponibili per l'uso, come the Grabber di collegamenti HTML e il Numeri evidenziatore.

Puoi personalizzare le espressioni regolari all'interno JMP.
Sebbene le espressioni predefinite siano utili, la pulizia dei dati può richiedere espressioni più personalizzate che meglio si adattano 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 '\d' metacarattere per abbinare tutte le cifre (0-9) e il '+' quantificatore per indicare che una o più cifre devono essere abbinate. Se applichiamo questa regex alla stringa "I have 5 apples and 10 oranges", 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 il Grabber di collegamenti HTML per spiegare un esempio più complesso. Questa regex incorporata in JMP è la seguente:
<A>]*?)\3[^>]*)|(\s*[a-z]+\s*=\s*('|")([^>]*?)\6))*\s*></A>
Ogni parte significativa dell'espressione di cui sopra è riassunta nella tabella seguente:
| '
| 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 facoltativi, quindi un apice singolo (') o un apice doppio ("). Cattura la citazione di apertura in un backreference. |
| '([^>]*?)' |
Questo corrisponde a tutti i caratteri che non sono la parentesi angolare di chiusura (>). Ancora più importante, cattura l'URL che è lo scopo principale di questa espressione. Si noti che questa sezione è simile a identificatori 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 facoltativi, il valore dell'attributo (tra virgolette) e garantisce che la citazione di chiusura corrisponda alla citazione di apertura. |
(Vedere Personalizza Regex nell'editor delle espressioni regolari (jmp.com) per maggiori informazioni)
Sebbene questi attributi e schemi possano sembrare complessi, sono disponibili moltissima 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, dov'è più utile?
Bene, è difficile restringere il campo a una sola applicazione, ma ti illustrerò un esempio di alcuni filtri di dati che ho eseguito per un progetto di analisi del testo che copre i dati dalla sezione delle discussioni della community degli utenti di JMP. L'obiettivo finale di questo progetto era trovare i termini e le frasi più comunemente usati pubblicati nelle discussioni nella comunità degli utenti.
Di seguito è mostrato un esempio tratto da uno solo di più di quarantottomila commenti alla discussione Si noti che il Formattazione HTML E Script JSL rendono molto difficile determinare il vocabolario utilizzato nel commento originale.

Campione di dati prima della pulizia delle espressioni regolari.
La pulizia manuale di questi termini e la 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 fare ciò, ho usato 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 qualsiasi tag di formattazione HTML e CSS dai dati:
<[^>]*>
Infine, volevo rimuovere tutti i numeri, i decimali e le parole contenenti numeri:
\d+(\.\d+)?|\.\d+
Guardando lo stesso messaggio di esempio originale, puoi vedere di seguito come ogni espressione filtra i parametri specificati:

Dati filtrati. Le parole che non sono filtrate sono evidenziate in giallo.
Esplorare i risultati
Una volta che abbiamo finito di filtrare le nostre espressioni personalizzate, come cambiano i nostri risultati? Diamo un'occhiata ai confronti fianco a fianco delle nuvole di parole per il set di dati non elaborato e non filtrato rispetto al set pulito di regex:
VECCHIO (Nessuna espressione regolare)
|
NUOVO (Con espressioni regolari)
|

|

|
Si noti 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 regex, i dati sono molto più utili per l'analisi e possono fornire risultati molto interessanti con un po' più di lavoro.
La conduzione di un'analisi dell'argomento sui dati ripuliti ha fornito alcuni risultati molto interessanti sugli argomenti a cui si risponde più comunemente all'interno della comunità, mostrati di seguito.

Analisi a cinque argomenti sui dati delle discussioni
I cinque argomenti forniti possono essere generalizzati in diverse categorie di domande che gli utenti potrebbero porre:
- 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 stringa. Per accedervi, visualizza Cols -> Utilità -> Nuova colonna per corrispondenza testo.

Regex è disponibile in qualsiasi colonna di testo di un file JMP.
Selezionando "Nuova colonna in base alla corrispondenza del testo" si aprirà la stessa finestra dell'editor di espressioni regolari di quella in Esplora testo. L'intero processo di cura dei dati è 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 al di fuori di una finestra di Text Explorer.
Pensieri finali
Le espressioni regolari sono uno strumento indispensabile nell'ambito dell'esplorazione dei dati. Offrono una soluzione versatile per manipolare e abbinare stringhe di testo a un output desiderato. Con regex, possiamo sbloccare tutto il potenziale dei nostri dati.
Per ulteriori informazioni su Regex, vedere:
Personalizza Regex nell'editor delle espressioni regolari (jmp.com)
Quantificatori nelle espressioni regolari | Microsoft Impara
Riferimento alle espressioni regolari (regular-expressions.info)
Funzione Regex (jmp.com)
Guida di JMP