RegEx VBA

Che cos'è RegEx in Excel VBA?

RegEx sta per " Regular Expression " in VBA Excel ed è una sequenza di caratteri che definisce il modello di ricerca per trovare un modello specifico di caratteri in una stringa di valori. In una parola semplice "possiamo creare un modello di espressione regolare e usarlo per cercare la stringa di quel modello".

VBA RegEx è un modello a oggetti. So che è intimidatorio guardando la spiegazione, ma il fatto è che la natura dell'oggetto. Una cosa che devi ricordare qui è che VBA RegEx (espressione regolare) è un oggetto funzione di testo come le nostre altre funzioni di testo "LEFT, RIGHT, MID".

Come abilitare RegEx in Excel VBA?

Come ho detto a VBA, RegEx è un modello a oggetti in VBA proprio come il nostro software esterno come "MS Word" e "MS PowerPoint". Allo stesso modo, RegEx è anche un COM (Component Object Model) a cui dobbiamo fare riferimento nell'editor VBA. Per abilitare RegEx, segui i passaggi seguenti.

Passaggio 1: vai a Visual Basic Editor (Alt + F11)

Passaggio 2: vai su Strumenti e riferimenti.

Passaggio 3: ora vedrai i riferimenti al progetto VBA. Scorri verso il basso e seleziona "Microsoft VBScript Regular Expression 5.5"

Passaggio 4: ora fai clic su OK. Ora possiamo accedere a questo oggetto RegEx nella codifica VBA.

Esempio: ora ti mostrerò un semplice esempio. Supponi di avere le parole "Vendite 2019, Vendite 2018 e Vendite 2017". Se definisci il modello come [0 - 7], corrisponderà a tutti i numeri compresi tra 0 e 7, quindi le nostre corrispondenze saranno 201, 201 e 2017 in ciascuna stringa.

Pattern RegEx VBA

Lo schema della funzione RegEx VBA sembra intimidatorio e richiede del tempo per comprenderlo. Possiamo vedere due tipi di una sequenza di caratteri qui uno è "Caratteri letterali" e un altro è "Metacaratteri".

  • I caratteri letterali cercano la corrispondenza esatta della stringa fornita. Ad esempio, la sequenza di caratteri letterali "EFG" cerca semplicemente tutte le corrispondenze di "EFG" nel testo fornito.
  • I metacaratteri non sono altro che una combinazione di caratteri con un significato esatto nel pattern RegEx. Questo è completamente diverso dai caratteri letterali. È un argomento enorme da trattare, di seguito sono riportate alcune delle sintassi importanti.
SintassiDescrizioneEsempioPartita di esempio
.Corrisponde a qualsiasi singolo carattere della stringa di inputptAnimale domestico. Pot, Put, Pattern
[]Corrisponde a qualsiasi singolo carattere tra le parentesi di una stringa di input[pt]Corrisponde a p o t
[^]Corrisponde a qualsiasi carattere singolo, non tra le parentesi di una stringa di input[^ pt]Non corrisponde né a p né a t
[Primo ultimo]Corrisponde a qualsiasi carattere compreso nell'intervallo fornito nella parentesi[0-9]Corrisponde a qualsiasi cifra compresa tra 0 e 9
[az]Corrisponde a qualsiasi carattere minuscolo dalla a alla z
[AZ]Corrisponde a qualsiasi carattere maiuscolo dalla A alla Z.
\SCorrisponde a qualsiasi carattere di spazio bianco-Corrisponde a spazio, nuova riga o carattere di tabulazione
\SCorrisponde a qualsiasi carattere diverso dallo spazio bianco-I caratteri delle corrispondenze non sono spazi, non una nuova riga o un carattere di tabulazione
\ dCorrisponde a qualsiasi carattere a una cifraSE 5 VG 6Partite 5 e 6
\ DCorrisponde a qualsiasi singolo carattere non numericoSE 5 VG 6Corrisponde a SEVG

Proprietà e metodi dell'oggetto RegEx

Come tutti i nostri modelli a oggetti, anche RegEx ha le sue proprietà e metodi. Ora vedremo uno per uno in dettaglio.

Proprietà dell'oggetto Regex VBA

  • Pattern: viene utilizzato per abbinare la stringa fornita.
  • Ignora maiuscole / minuscole : consente di ignorare i caratteri maiuscoli e minuscoli.
  • Globale: se vuoi trovare tutte le corrispondenze nel modello, allora TRUE è l'argomento, altrimenti verrà trovata la prima corrispondenza.
  • Multi-riga: se desideri trovare tra nuove interruzioni di riga, puoi utilizzare questo.

Metodi dell'oggetto RegEx

  • Test: serve per verificare se il pattern può essere trovato nella stringa fornita. Questo restituirà TRUE se trovato oppure FALSE.
  • Esegui: restituirà tutte le corrispondenze del modello rispetto alla stringa di ricerca.
  • Sostituisci: sostituirà la stringa di ricerca con la nuova stringa.

Esempio di RegEx in VBA Excel

Ora dai un'occhiata al seguente codice VBA di esempio.

Puoi scaricare questo modello Excel VBA RegEx qui - Modello Excel VBA RegEx

Codice:

Sub RegEx_Example () Dim RegEx As Object, MyString As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "[0-9] +" End With MyString = "Data di nascita anno è 1985" MsgBox RegEx .Test (MyString) MyString = "La data di nascita è ???" MsgBox RegEx.Test (MyString) End Sub

fregular

Nel codice sopra, abbiamo impostato il modello per cercare il numero da 0 a 9 come segue.

 Con RegEx .Pattern = "[0-9] +" End With 

Quindi la variabile MyString = "Date of Birth year is 1985" contiene i valori da 0 a 9, quindi la nostra finestra di messaggio restituirà TRUE.

MyString = "La data dell'anno di nascita è ???" non ha numeri da 0 a 9, quindi restituirà FALSE come risultato delle finestre di messaggio.