VBA RegEx - Hur använder jag Regular Expression i VBA Excel? (Exempel)

Innehållsförteckning

Vad är RegEx i Excel VBA?

RegEx står för " Regular Expression " i VBA Excel och är en sekvens av tecken som definierar sökmönstret för att hitta ett specifikt teckenmönster i en rad värden. I ett enkelt ord, "kan vi skapa ett regelbundet uttrycksmönster och använda det för att söka efter strängen i det mönstret."

VBA RegEx är en objektmodell. Jag vet att det är skrämmande genom att titta på förklaringen, men saken är att objektets natur. En sak du måste komma ihåg här är VBA RegEx (Regular Expression) är ett textfunktionsobjekt som våra andra textfunktioner, "VÄNSTER, HÖGER, MID."

Hur aktiverar jag RegEx i Excel VBA?

Som jag sa till VBA är RegEx en objektmodell i VBA, precis som vår externa programvara som "MS Word" och "MS PowerPoint." På samma sätt är RegEx också en Component Object Model (COM), som vi behöver hänvisa till i VBA-redigeraren. Följ stegen nedan för att aktivera RegEx.

Steg 1: Gå till Visual Basic Editor (Alt + F11)

Steg 2: Gå till Verktyg och referenser.

Steg 3: Nu ser du referenser till VBA-projektet. Rulla ner och välj "Microsoft VBScript Regular Expression 5.5."

Steg 4: Klicka nu på OK. Vi kan komma åt detta RegEx-objekt nu i VBA-kodning.

Exempel - Nu visar jag ett enkelt exempel. Antag att du har orden ”Försäljning 2019, Försäljning 2018 och Försäljning 2017”. Om du definierar mönstret som (0 - 7) matchar det alla siffror mellan 0 till 7, så våra matchningar blir 201, 201 och 2017 i varje sträng.

VBA RegEx-mönster

Mönstret för VBA RegEx-funktionen ser skrämmande ut och tar lite tid att förstå mönstret. Vi kan se två typer av en sekvens av tecken här en är "bokstavliga tecken", och en annan är "metatecken."

  • Bokstäver söker efter den exakta matchningen för den angivna strängen. Till exempel letar den bokstavliga teckensekvensen “EFG” helt enkelt efter alla matchningar av “EFG” i den angivna texten.
  • Metatecken är inget annat än en kombination av tecken med exakt betydelse i RegEx-mönstret. Detta helt annorlunda än bokstavstecken. Det är ett stort ämne att täcka. Nedan följer några av de viktiga syntaxerna.
Syntax Beskrivning Exempel Exempel Matchning
. Det matchar varje enskilt tecken i inmatningssträngen. pt Sällskapsdjur. Kruka, sätta, mönster
() Det matchar varje enskilt tecken mellan fästet i en inmatningssträng. (pt) Det matchar antingen p eller t
(^) Det matchar ett enskilt tecken, inte mellan parentesen på en inmatningssträng. (pt) Det matchar varken p eller t
(Första-sista) Den matchar alla tecken mellan intervallet i parentes. (0-9) Den matchar alla siffror från 0 till 9
(az) Det matchar alla gemener från a till z
(AZ) Det matchar alla versaler från A till Ö
s Det matchar alla vita tecken. - Matchar mellanslag, ny rad eller tabbtecken
S Det matchar alla karaktärer som inte är blanksteg - Matchningstecken är inte mellanslag, inte ny rad eller inte tabbetecken
d Det matchar alla ensiffriga tecken. SE 5 VG 6 Matchar 5 och 6
D Det matchar varje enskilt icke-siffrigt tecken SE 5 VG 6 Matchar SEVG

Egenskaper och metoder för RegEx-objekt

Liksom alla våra objektmodeller har även RegEx sina egna egenskaper och metoder. Nu kommer vi att se en efter en i detalj.

Egenskaper för VBA Regex Object

  • Mönster: Detta används för att matcha den angivna strängen.
  • Ignorera fall: Detta är för att ignorera versaler och gemener.
  • Globalt: Om du vill hitta alla matchningar i mönstret är SANT argumentet, annars kommer den första matchningen att hittas.
  • Multi-Line: Om du vill hitta över nya radbrytningar kan du använda detta.

Metoder för RegEx-objekt

  • Test: Detta är för att testa om mönstret finns i den angivna strängen. Detta returnerar SANT om det hittas eller annars FALSE.
  • Kör: Detta returnerar alla matchningar i mönstret mot söksträngen.
  • Ersätt: Detta ersätter söksträngen med den nya strängen.

Exempel på RegEx i VBA Excel

Titta nu på nedanstående exempel på VBA-kod.

Koda:

Sub RegEx_Example () Dim RegEx Som Object, MyString Som String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "(0-9) +" End With MyString = "Födelsedatum är 1985" MsgBox RegEx .Test (MyString) MyString = "Födelsedatum är ???" MsgBox RegEx.Test (MyString) End Sub

regelbunden

I ovanstående kod har vi ställt in mönstret för att söka numret från 0 till 9 enligt följande.

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

Sedan har variabeln MyString = “Födelsedatum är 1985”, detta innehåller värdena från 0 till 9, så vår meddelandefält kommer att returnera SANT.

MyString = “Födelsedatum är ???” har inga siffror från 0 till 9, så kommer FALSE att returneras när meddelandefältet blir resultatet.

Intressanta artiklar...