VBA RegEx - Hvordan bruges Regular Expression i VBA Excel? (Eksempler)

Indholdsfortegnelse

Hvad er RegEx i Excel VBA?

RegEx står for " Regular Expression " i VBA Excel og er en sekvens af tegn, der definerer søgemønsteret for at finde et specifikt mønster af tegn i en streng af værdier. I et simpelt ord "kan vi oprette et regulært udtryksmønster og bruge det til at søge efter strengen i dette mønster."

VBA RegEx er en objektmodel. Jeg ved, at det er skræmmende ved at se på forklaringen, men sagen er, at objektets natur. En ting, du skal huske her, er VBA RegEx (Regular Expression) er et tekstfunktionsobjekt ligesom vores andre tekstfunktioner, "VENSTRE, HØJRE, MIDT."

Sådan aktiveres RegEx i Excel VBA?

Som jeg fortalte VBA, er RegEx en objektmodel i VBA, ligesom vores eksterne software som "MS Word" og "MS PowerPoint." Tilsvarende er RegEx også en Component Object Model (COM), som vi skal henvise til i VBA-editoren. Følg nedenstående trin for at aktivere RegEx.

Trin 1: Gå til Visual Basic Editor (Alt + F11)

Trin 2: Gå til Værktøjer og referencer.

Trin 3: Nu vil du se referencer til VBA-projektet. Rul ned og vælg "Microsoft VBScript Regular Expression 5.5."

Trin 4: Klik nu på OK. Vi kan få adgang til dette RegEx-objekt nu i VBA-kodning.

Eksempel - Nu vil jeg vise dig et enkelt eksempel. Antag, at du har ordene “Salg 2019, Salg 2018 og Salg 2017”. Hvis du definerer mønsteret som (0 - 7), matcher det alle tallene mellem 0 og 7, så vores kampe bliver 201, 201 og 2017 i hver streng.

VBA RegEx-mønster

Mønsteret for VBA RegEx-funktionen ser skræmmende ud og tager noget tid at forstå mønsteret. Vi kan se to slags en sekvens af tegn her, den ene er "bogstavelige tegn", og en anden er "metategn."

  • Bogstavelige tegn søger efter det nøjagtige match for den angivne streng. For eksempel ser den bogstavelige tegnsekvens "EFG" simpelthen efter alle matches af "EFG" i den angivne tekst.
  • Metategn er intet andet end en kombination af tegn med nøjagtig betydning i RegEx-mønsteret. Dette er helt anderledes end bogstavelige tegn. Det er et stort emne at dække. Nedenfor er nogle af de vigtige syntakser.
Syntaks Beskrivelse Eksempel Eksempel Match
. Det matcher ethvert enkelt tegn i inputstrengen. pt Kæledyr. Pot, Put, Mønster
() Det matcher ethvert enkelt tegn mellem parentesen på en inputstreng. (pt) Det matcher enten p eller t
(^) Det matcher ethvert enkelt tegn, ikke mellem parentesen på en inputstreng. (pt) Det matcher hverken p eller t
(Først sidst) Det matcher ethvert tegn mellem det interval, der er angivet i parentes. (0-9) Det matcher ethvert ciffer fra 0 til 9
(az) Det matcher ethvert lille bogstav fra a til z
(AZ) Det matcher ethvert stort bogstav fra A til Z
s Det matcher enhver hvid plads karakter. - Matcher mellemrum, ny linje eller fanetegn
S Det matcher ethvert tegn, der ikke er hvidt - Matchetegn er ikke mellemrum, ikke ny linje eller ikke faneblad
d Det matcher ethvert enkeltcifret tegn. SE 5 VG 6 Kamp 5 og 6
D Det matcher et enkelt ikke-cifret tegn SE 5 VG 6 Matcher SEVG

Egenskaber og metoder til RegEx-objekt

Som alle vores objektmodeller har RegEx også sine egne egenskaber og metoder. Nu vil vi se en efter en i detaljer.

Egenskaber for VBA Regex Object

  • Mønster: Dette bruges til at matche den medfølgende streng.
  • Ignorer sag: Dette er for at ignorere store og små bogstaver.
  • Global: Hvis du vil finde alle matches i mønsteret, så er TRUE argumentet, ellers vil den første match blive fundet.
  • Multi-Line: Hvis du ønsker at finde på tværs af nye linjeskift, kan du bruge dette.

Metoder til RegEx-objekt

  • Test: Dette er for at teste, om mønsteret kan findes i den angivne streng. Dette returnerer SAND, hvis det findes eller ellers FALSK.
  • Udfør: Dette returnerer alle matchene i mønsteret mod fundstrengen.
  • Erstat: Dette erstatter søgestrengen med den nye streng.

Eksempel på RegEx i VBA Excel

Se nu på nedenstående eksempel på VBA-kode.

Kode:

Sub RegEx_Example () Dim RegEx som objekt, MyString som streng Sæt RegEx = CreateObject ("VBScript.RegExp") Med RegEx .Pattern = "(0-9) +" Afslut med MyString = "Fødselsdato er 1985" MsgBox RegEx .Test (MyString) MyString = "Fødselsdato er ???" MsgBox RegEx.Test (MyString) End Sub

fast

I ovenstående kode har vi indstillet mønsteret til at søge nummeret fra 0 til 9 som følger.

Med RegEx .Pattern = "(0-9) +" Afslut med

Så variablen MyString = "Fødselsdato er 1985", dette holder værdierne fra 0 til 9, så vores meddelelsesboks returnerer SAND.

MyString = “Fødselsdato er ???” har ikke nogen tal fra 0 til 9, så returnerer FALSK som resultat af meddelelsesfelterne.

Interessante artikler...