Esempi di RegEx di Excel: utilizzo delle espressioni regolari nelle formule

  • Condividi Questo
Michael Brown

Non si capisce mai perché le espressioni regolari non siano supportate nelle formule di Excel: con le nostre funzioni personalizzate, è possibile trovare, sostituire, estrarre e rimuovere facilmente le stringhe che corrispondono a un modello specifico.

A prima vista, Excel ha tutto ciò che può servire per la manipolazione delle stringhe di testo. E le espressioni regolari? Ops, non ci sono funzioni Regex integrate in Excel, ma nessuno dice che non possiamo crearne di nostre :)

    Che cos'è l'espressione regolare?

    Un'espressione regolare (alias regex o regexp ) è una sequenza di caratteri appositamente codificata che definisce uno schema di ricerca. Utilizzando tale schema, è possibile trovare una combinazione di caratteri corrispondente in una stringa o convalidare l'immissione di dati. Se si ha familiarità con la notazione dei caratteri jolly, si può pensare alle regex come a una versione avanzata dei caratteri jolly.

    Le espressioni regolari hanno una propria sintassi composta da caratteri speciali, operatori e costrutti. Ad esempio, [0-5] corrisponde a qualsiasi singola cifra da 0 a 5.

    Le espressioni regolari sono utilizzate in molti linguaggi di programmazione, tra cui JavaScript e VBA. Quest'ultimo dispone di uno speciale oggetto RegExp, che utilizzeremo per creare le nostre funzioni personalizzate.

    Excel supporta le regex?

    Purtroppo non esistono funzioni Regex integrate in Excel: per poter utilizzare le espressioni regolari nelle formule, dovrete creare una funzione definita dall'utente (basata su VBA o .NET) o installare strumenti di terze parti che supportino le regex.

    Foglio di istruzioni di Excel Regex

    Sia che uno schema regex sia molto semplice o estremamente sofisticato, viene costruito utilizzando la sintassi comune. Questo tutorial non ha lo scopo di insegnare le espressioni regolari. Per questo, ci sono molte risorse online, dai tutorial gratuiti per i principianti ai corsi premium per gli utenti avanzati.

    Di seguito forniamo un rapido riferimento ai principali modelli di RegEx, che vi aiuterà a comprendere le basi e che potrà anche servire come foglio di testo per lo studio di ulteriori esempi.

    Se si ha dimestichezza con le espressioni regolari, si può passare direttamente alle funzioni RegExp.

    Personaggi

    Questi sono i modelli più frequentemente utilizzati per abbinare determinati caratteri.

    Modello Descrizione Esempio Abbinamenti
    . Carattere jolly: corrisponde a qualsiasi carattere singolo, ad eccezione di un'interruzione di riga. .ot punto , caldo , vaso , @ot
    \d Carattere cifra: qualsiasi cifra singola da 0 a 9 \d In a1b , fiammiferi 1
    \D Qualsiasi carattere che NON sia una cifra \D In a1b , fiammiferi a e b
    \s Caratteri di spazi bianchi: spazio, tabulazione, nuova riga e ritorno a capo. .\s. In 3 centesimi , fiammiferi 3 c
    \S Qualsiasi carattere non spaziale \S+ In 30 centesimi , fiammiferi 30 e centesimi
    \w Carattere di parola: qualsiasi lettera ASCII, cifra o trattino basso. \w+ In 5_gatti*** , fiammiferi 5_gatti
    \W Qualsiasi carattere che NON sia un carattere alfanumerico o un trattino basso. \W+ In 5_gatti*** , fiammiferi ***
    \t Scheda
    \n Nuova linea \n\d+ Nella stringa di due righe qui sotto, le corrispondenze 10

    5 gatti

    10 cani

    \ Evade il significato speciale di un carattere, in modo da poterlo cercare \.

    \w+\.

    Permette di trovare il carattere letterale "." in una stringa.

    Il Sig. , La signora , Il prof.

    Classi di personaggi

    Utilizzando questi schemi, è possibile abbinare elementi di diversi set di caratteri.

    Modello Descrizione Esempio Abbinamenti
    [personaggi] Corrisponde a qualsiasi singolo carattere tra le parentesi d[oi]g cane e scavare
    [^caratteri] Corrisponde a qualsiasi singolo carattere NON compreso nelle parentesi d[^oi]g Abbinamenti dag, dug , d1g

    Non corrisponde cane e scavare

    [da-a] Corrisponde a qualsiasi carattere nell'intervallo tra le parentesi [0-9]

    [a-z]

    [A-Z]

    Qualsiasi cifra singola da 0 a 9

    Qualsiasi lettera minuscola singola

    Qualsiasi lettera singola maiuscola

    Quantificatori

    I quantificatori sono espressioni speciali che specificano il numero di caratteri da abbinare. Un quantificatore si applica sempre al carattere che lo precede.

    Modello Descrizione Esempio Abbinamenti
    * Zero o più occorrenze 1a* 1, 1a , 1aa, 1aaa , ecc.
    + Una o più occorrenze po+ In vaso , fiammiferi po

    In povero , fiammiferi cacca

    ? Zero o una occorrenza roa?d strada, asta
    *? Zero o più occorrenze, ma il meno possibile. 1a*? In 1a , 1aa e 1aaa , fiammiferi 1a
    +? Una o più occorrenze, ma il meno possibile. po+? In vaso e povero , fiammiferi po
    ?? Zero o un'occorrenza, ma il minor numero possibile di occorrenze. roa? In strada e asta , fiammiferi ro
    {n} Corrisponde al modello precedente n volte \d{3} Esattamente 3 cifre
    {n,} Corrisponde al modello precedente n o più volte \d{3,} 3 o più cifre
    {n,m} Corrisponde allo schema precedente tra n e m volte \d{3,5} Da 3 a 5 cifre

    Raggruppamento

    I costrutti di raggruppamento vengono utilizzati per catturare una sottostringa dalla stringa di origine, in modo da poter eseguire qualche operazione con essa.

    Sintassi Descrizione Esempio Abbinamenti
    (modello) Gruppo di cattura: cattura una sottostringa corrispondente e le assegna un numero ordinale. (\d+) In 5 gatti e 10 cani , cattura 5 (gruppo 1) e 10 (gruppo 2)
    (?:pattern) Gruppo non catturante: corrisponde a un gruppo ma non lo cattura. (\d+)(?: cani) In 5 gatti e 10 cani , cattura 10
    \1 Contenuto del gruppo 1 (\d+)\+(\d+)=\2\+\1 Corrispondenza 5+10=10+5 e cattura 5 e 10 che sono in gruppi di cattura
    \2 Contenuto del gruppo 2

    Ancore

    Le ancore specificano una posizione nella stringa di input in cui cercare una corrispondenza.

    Ancora Descrizione Esempio Abbinamenti
    ^ Inizio della stringa

    Nota: [^ tra parentesi] significa "non".

    ^\d+ Qualsiasi numero di cifre all'inizio della stringa.

    In 5 gatti e 10 cani , fiammiferi 5

    $ Fine della stringa \d+$ Qualsiasi numero di cifre alla fine della stringa.

    In 10 più 5 dà 15 , partite 15

    \b Confine di parola \bjoy\b Abbinamenti gioia come parola separata, ma non in piacevole .
    \B NON è un confine di parole \Bjoy\B Abbinamenti gioia in piacevole ma non come parola separata.

    Costrutto di alternanza (OR)

    L'operando di alternanza attiva la logica OR, in modo da poter abbinare questo o quell'elemento.

    Costruire Descrizione Esempio Abbinamenti
    Corrisponde a qualsiasi singolo elemento separato dalla barra verticale. (s In vende conchiglie, fiammiferi vende e conchiglie

    Look-around

    I costrutti di lookaround sono utili quando si vuole far corrispondere qualcosa che è o non è seguito o preceduto da qualcos'altro. Queste espressioni sono talvolta chiamate "asserzioni a larghezza zero" o "corrispondenza a larghezza zero" perché corrispondono a una posizione piuttosto che a caratteri reali.

    Nota: nel formato VBA RegEx, i lookbehind non sono supportati.

    Modello Descrizione Esempio Abbinamenti
    (?=) Sguardo positivo X(?=Y) Corrisponde all'espressione X quando è seguita da Y (cioè se c'è Y davanti a X)
    (?!) Aspetto negativo X(?!Y) Corrisponde all'espressione X se NON è seguita da Y
    ("<=) Sguardo positivo alle spalle (?<=Y)X Corrisponde all'espressione X quando è preceduta da Y (cioè se c'è Y dietro a X)
    (? )</td Sguardo negativo alle spalle (? Y)X</td Corrisponde all'espressione X quando NON è preceduta da Y

    Ora che conoscete gli elementi essenziali, passiamo alla parte più interessante: l'uso delle regex sui dati reali per analizzare le stringhe e trovare le informazioni richieste. Se avete bisogno di maggiori dettagli sulla sintassi, la guida Microsoft sul linguaggio delle espressioni regolari può esservi utile.

    Funzioni RegEx personalizzate per Excel

    Come già accennato, Microsoft Excel non dispone di funzioni RegEx integrate. Per abilitare le espressioni regolari, abbiamo creato tre funzioni VBA personalizzate (alias funzioni definite dall'utente). Potete copiare i codici dalle pagine collegate qui sotto o dalla nostra cartella di lavoro di esempio, e poi incollarli nei vostri file Excel.

    Come funzionano le funzioni VBA RegExp

    Questa sezione spiega i meccanismi interni e può essere interessante per chi vuole sapere esattamente cosa succede nel backend.

    Per iniziare a utilizzare le espressioni regolari in VBA, è necessario attivare la libreria di riferimenti agli oggetti RegEx oppure utilizzare la funzione CreateObject. Per risparmiare la fatica di impostare il riferimento nell'editor VBA, abbiamo scelto quest'ultimo approccio.

    L'oggetto RegExp ha 4 proprietà:

    • Modello - è il modello da abbinare alla stringa di input.
    • Globale - controlla se trovare tutte le corrispondenze nella stringa di input o solo la prima. Nelle nostre funzioni, è impostato su True per ottenere tutte le partite .
    • MultiLine - determina se il pattern deve essere cercato su tutte le interruzioni di riga nelle stringhe multilinea o solo sulla prima riga. Nei nostri codici, è impostato su True per ricercare in ogni riga .
    • IgnoraCaso - definisce se un'espressione regolare è sensibile alle maiuscole e alle minuscole (valore predefinito) o insensibile alle maiuscole e alle minuscole (impostato su True). Nel nostro caso, ciò dipende da come si configura il parametro opzionale match_case Per impostazione predefinita, tutte le funzioni sono sensibile alle maiuscole e alle minuscole .

    Limitazioni delle RegExp in VBA

    Excel VBA implementa gli schemi regex essenziali, ma manca di molte funzionalità avanzate disponibili in .NET, Perl, Java e altri motori regex. Ad esempio, VBA RegExp non supporta modificatori in linea come (?i) per la corrispondenza senza distinzione tra maiuscole e minuscole o (?m) per la modalità multilinea, lookbehinds, classi POSIX, per citarne alcuni.

    Funzione Regex Match di Excel

    Il RegExpMatch cerca in una stringa di input il testo che corrisponde a un'espressione regolare e restituisce VERO se viene trovata una corrispondenza, FALSO altrimenti.

    RegExpMatch(testo, modello, [match_case])

    Dove:

    • Testo (obbligatorio) - una o più stringhe in cui cercare.
    • Modello (obbligatorio) - l'espressione regolare da confrontare.
    • Caso_di_corrente (facoltativo) - tipo di corrispondenza. TRUE o omesso - sensibile alle maiuscole e alle minuscole; FALSE - insensibile alle maiuscole e alle minuscole.

    Il codice della funzione è qui.

    Esempio: come usare le espressioni regolari per abbinare le stringhe

    Nel set di dati sottostante, si supponga di voler identificare le voci contenenti i codici SKU.

    Dato che ogni SKU inizia con 2 lettere maiuscole, seguite da un trattino e da 4 cifre, è possibile abbinarle utilizzando la seguente espressione.

    Modello : \b[A-Z]{2}-\d{4}\b

    Dove [A-Z]{2} indica 2 lettere maiuscole qualsiasi dalla A alla Z e \d{4} indica 4 cifre qualsiasi da 0 a 9. Un limite di parola \b indica che una SKU è una parola separata e non fa parte di una stringa più grande.

    Una volta stabilito lo schema, iniziate a digitare una formula come fate normalmente e il nome della funzione apparirà nell'elenco suggerito dal completamento automatico di Excel:

    Supponendo che la stringa originale sia in A5, la formula è la seguente:

    =RegExpMatch(A5, "\b[A-Z]{2}-\d{3}\b")

    Per comodità, è possibile inserire l'espressione regolare in una cella separata e utilizzare un riferimento assoluto ($A$2) per l'attributo modello In questo modo l'indirizzo della cella rimane invariato quando si copia la formula in altre celle:

    =RegExpMatch(A5, $A$2)

    Per visualizzare le proprie etichette di testo al posto di TRUE e FALSE, annidare RegExpMatch nella funzione IF e specificare i testi desiderati nel parametro valore_se_vero e valore_se_falso argomenti:

    =IF(RegExpMatch(A5, $A$2), "Sì", "No")

    Per ulteriori esempi di formule, vedere:

    • Come abbinare le stringhe utilizzando le espressioni regolari
    • Convalida dei dati di Excel con le regex

    Funzione Estrai di Excel Regex

    Il RegExpExtract cerca le sottostringhe che corrispondono a un'espressione regolare ed estrae tutte le corrispondenze o una corrispondenza specifica.

    RegExpExtract(text, pattern, [instance_num], [match_case])

    Dove:

    • Testo (obbligatorio) - la stringa di testo in cui effettuare la ricerca.
    • Modello (obbligatorio) - l'espressione regolare da confrontare.
    • Numero_istanza (opzionale) - un numero di serie che indica quale istanza estrarre. Se omesso, restituisce tutte le corrispondenze trovate (impostazione predefinita).
    • Caso_di_corrente (facoltativo) - Definisce se far corrispondere (VERO o omesso) o ignorare (FALSO) il caso del testo.

    Il codice della funzione è disponibile qui.

    Esempio: come estrarre le stringhe utilizzando le espressioni regolari

    Per estrarre i numeri delle fatture, utilizzeremo una regex molto semplice che corrisponde a qualsiasi numero di 7 cifre:

    Modello \b\d{7} \b

    Mettete il modello in A2 e otterrete il lavoro con questa formula compatta ed elegante:

    =RegExpExtract(A5, $A$2)

    Se viene trovato un modello, la formula estrae un numero di fattura; se non viene trovata alcuna corrispondenza, non viene restituito nulla.

    Per ulteriori esempi, vedere: Come estrarre stringhe in Excel utilizzando le regex.

    Funzione di sostituzione Regex di Excel

    Il RegExpReplace sostituisce i valori corrispondenti a una regex con il testo specificato dall'utente.

    RegExpReplace(text, pattern, replacement, [instance_num], [match_case])

    Dove:

    • Testo (obbligatorio) - la stringa di testo in cui effettuare la ricerca.
    • Modello (obbligatorio) - l'espressione regolare da confrontare.
    • Sostituzione (obbligatorio) - il testo con cui sostituire le sottostringhe corrispondenti.
    • Numero_istanza (opzionale) - l'istanza da sostituire. L'impostazione predefinita è "tutte le corrispondenze".
    • Caso_di_corrente (facoltativo) - controlla se far corrispondere (VERO o omesso) o ignorare (FALSO) le maiuscole del testo.

    Il codice della funzione è disponibile qui.

    Esempio: come sostituire o rimuovere stringhe utilizzando le regex

    Alcuni dei nostri registri contengono numeri di carte di credito. Queste informazioni sono riservate e si consiglia di sostituirle con altre o di eliminarle del tutto. Entrambe le operazioni possono essere eseguite con l'aiuto di RegExpReplace In un secondo scenario, la sostituzione avverrà con una stringa vuota.

    Nella nostra tabella di esempio, tutti i numeri di carta hanno 16 cifre, scritte in 4 gruppi separati da spazi. Per trovarli, replichiamo il modello utilizzando questa espressione regolare:

    Modello \b\d{4} \d{4} \d{4} \d{4} \d{4}b

    Per la sostituzione, si utilizza la seguente stringa:

    Sostituzione : XXXX XXXX XXXX XXXX XXXX

    Ed ecco una formula completa per sostituire numeri di carta di credito con informazioni non sensibili:

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "XXXX XXXX XXXX XXXX")

    Con la regex e il testo sostitutivo in celle separate (A2 e B2), la formula funziona ugualmente bene:

    In Excel, "rimuovere" è un caso particolare di "sostituire". a rimuovere numeri di carta di credito, è sufficiente utilizzare una stringa vuota ("") per il campo sostituzione argomento:

    =RegExpReplace(A5, "\b\d{4} \d{4} \d{4} \d{4}\b", "")

    Suggerimento: per eliminare le righe vuote dai risultati, è possibile utilizzare un'altra funzione RegExpReplace, come mostrato in questo esempio: Come rimuovere le righe vuote con la regex.

    Per ulteriori informazioni, consultare il sito:

    • Come sostituire le stringhe in Excel utilizzando le regex
    • Come rimuovere le stringhe utilizzando le regex
    • Come eliminare gli spazi bianchi usando le regex

    Strumenti Regex per abbinare, estrarre, sostituire e rimuovere le sottostringhe

    Gli utenti della nostra Ultimate Suite possono ottenere tutta la potenza delle espressioni regolari senza inserire una sola riga di codice nelle loro cartelle di lavoro. Tutto il codice necessario viene scritto dai nostri sviluppatori e integrato senza problemi in Excel durante l'installazione.

    A differenza delle funzioni VBA discusse in precedenza, le funzioni di Ultimate Suite sono basate su .NET, il che offre due vantaggi principali:

    1. È possibile utilizzare le espressioni regolari in normali cartelle di lavoro .xlsx senza aggiungere alcun codice VBA e senza doverle salvare come file abilitati alle macro.
    2. Il motore .NET Regex supporta le espressioni regolari classiche complete, che consentono di costruire modelli più sofisticati.

    Come utilizzare le Regex in Excel

    Con Ultimate Suite installata, l'uso delle espressioni regolari in Excel è semplice come questi due passaggi:

    1. Sul Dati Ablebits nella scheda Testo gruppo, fare clic su Strumenti Regex .

    2. Sul Strumenti Regex fare quanto segue:
      • Selezionare i dati di origine.
      • Inserire il modello regex.
      • Scegliere l'opzione desiderata: Partita , Estratto , Rimuovere o Sostituire .
      • Per ottenere il risultato come formula e non come valore, selezionare l'opzione Inserire come formula casella di controllo.
      • Premete il pulsante di azione.

      Ad esempio, per rimuovere i numeri di carta di credito dalle celle A2:A6, configuriamo queste impostazioni:

    In un attimo, una funzione AblebitsRegex verrà inserita in una nuova colonna a destra dei dati originali. Nel nostro caso, la formula è:

    =AblebitsRegexRemove(A2, "\b\d{4} \d{4} \d{4} \d{4} \d{4}\b")

    Una volta che la formula è stata creata, è possibile modificarla, copiarla o spostarla come qualsiasi formula nativa.

    Come inserire una formula Regex direttamente in una cella

    Le funzioni AblebitsRegex possono anche essere inserite direttamente in una cella senza utilizzare l'interfaccia del modulo aggiuntivo. Ecco come fare:

    1. Fare clic sul pulsante fx sulla barra della formula o Funzione di inserimento sul Formule scheda.
    2. Nel Funzione di inserimento selezionare la finestra di dialogo AblebitsUDFs scegliere la funzione di interesse e fare clic su OK.

    3. Definite gli argomenti della funzione come fate normalmente e fate clic su OK. Fatto!

    Per ulteriori informazioni, vedere Strumenti Regex per Excel.

    Ecco come utilizzare le espressioni regolari per abbinare, estrarre, sostituire e rimuovere il testo nelle celle di Excel. Vi ringrazio per la lettura e vi aspetto sul nostro blog la prossima settimana!

    Download disponibili

    Excel Regex - esempi di formule (file .xlsm)

    Ultimate Suite - versione di prova (file .exe)

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.