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

Innholdsfortegnelse

Hva er RegEx i Excel VBA?

RegEx står for " Regular Expression " i VBA Excel og er en sekvens av tegn som definerer søkemønsteret for å finne et bestemt mønster av tegn i en streng med verdier. I et enkelt ord, "kan vi lage et regulært uttrykksmønster og bruke det til å søke etter strengen til dette mønsteret."

VBA RegEx er en objektmodell. Jeg vet at det er skremmende ved å se på forklaringen, men saken er at objektets natur. En ting du må huske her er VBA RegEx (Regular Expression) er et tekstfunksjonsobjekt som våre andre tekstfunksjoner, "VENSTRE, HØYRE, MIDT."

Hvordan aktivere RegEx i Excel VBA?

Som jeg sa til VBA, er RegEx en objektmodell i VBA, akkurat som vår eksterne programvare som "MS Word" og "MS PowerPoint." Tilsvarende er RegEx også en Component Object Model (COM), som vi må referere til i VBA-redigereren. Følg trinnene nedenfor for å aktivere RegEx.

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

Trinn 2: Gå til Verktøy og referanser.

Trinn 3: Nå vil du se referanser til VBA-prosjektet. Rull ned og velg "Microsoft VBScript Regular Expression 5.5."

Trinn 4: Klikk nå på, OK. Vi får tilgang til dette RegEx-objektet nå i VBA-koding.

Eksempel - Nå vil jeg vise deg ett enkelt eksempel. Anta at du har ordene “Salg 2019, Salg 2018 og Salg 2017”. Hvis du definerer mønsteret som (0 - 7), samsvarer det med alle tallene mellom 0 og 7, så kampene våre blir 201, 201 og 2017 i hver streng.

VBA RegEx mønster

Mønsteret til VBA RegEx-funksjonen ser skremmende ut, og det tar litt tid å forstå mønsteret. Vi kan se to typer en sekvens av tegn her, den ene er "Bokstavstegn", og en annen er "Metategn."

  • Bokstavstegn søker etter nøyaktig samsvar med den oppgitte strengen. For eksempel ser den bokstavelige tegnsekvensen "EFG" bare etter alle treffene til "EFG" i den angitte teksten.
  • Metategn er bare en kombinasjon av tegn med nøyaktig betydning i RegEx-mønsteret. Dette helt annerledes enn bokstavelige tegn. Det er et stort tema å dekke. Nedenfor er noen av de viktige syntaksen.
Syntaks Beskrivelse Eksempel Eksempel Match
. Det samsvarer med hvert enkelt tegn i inngangsstrengen. pt Kjæledyr. Gryte, put, mønster
() Det samsvarer med et enkelt tegn mellom braketten til en inngangsstreng. (pt) Det samsvarer med enten p eller t
(^) Det samsvarer med et enkelt tegn, ikke mellom braketten til en inngangsstreng. (pt) Det samsvarer verken med p eller t
(Først sist) Den samsvarer med hvilket som helst tegn mellom området som er angitt i parentes. (0-9) Det samsvarer med ethvert siffer fra 0 til 9
(az) Det samsvarer med små bokstaver fra a til z
(AZ) Det samsvarer med alle store bokstaver fra A til Å
s Det samsvarer med alle hvite mellomromskarakterer. - Matcher mellomrom, ny linje eller tabulatortegn
S Det samsvarer med alle tegn som ikke er mellomrom - Treffkarakterer er ikke mellomrom, ikke ny linje eller ikke fanetegn
d Det samsvarer med et enkeltsifret tegn. SE 5 VG 6 Kamp 5 og 6
D Det samsvarer med et enkelt ikke-sifret tegn SE 5 VG 6 Kamper SEVG

Egenskaper og metoder for RegEx-objekt

Som alle våre objektmodeller har også RegEx sine egne egenskaper og metoder. Nå vil vi se en etter en i detalj.

Egenskaper for VBA Regex Object

  • Mønster: Dette brukes til å matche den medfølgende strengen.
  • Ignorer sak: Dette er for å ignorere store og små bokstaver.
  • Global: Hvis du vil finne alle treff i mønsteret, så er SANT argumentet, ellers blir den første kampen funnet.
  • Multi-Line: Hvis du ønsker å finne nye linjeskift, kan du bruke dette.

Metoder for RegEx-objekt

  • Test: Dette er for å teste om mønsteret finnes i den angitte strengen. Dette vil returnere SANT hvis det blir funnet eller ellers FALSE.
  • Utfør: Dette vil returnere alle treffene i mønsteret mot funnstrengen.
  • Erstatt: Dette vil erstatte søkestrengen med den nye strengen.

Eksempel på RegEx i VBA Excel

Ta en titt på nedenstående eksempel på VBA-kode.

Kode:

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

regelmessig

I koden ovenfor har vi satt mønsteret for å søke nummeret fra 0 til 9 som følger.

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

Deretter har variabelen MyString = "Fødselsdato er 1985" dette holder verdiene fra 0 til 9, så meldingsboksen vår vil returnere SANT.

MyString = “Fødselsdato er ???” har ikke tall fra 0 til 9, så vil returnere FALSE når meldingsboksene blir resultatet.

Interessante artikler...