VBA RegEx

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 reguljärt 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 behöver komma ihåg här är VBA RegEx (Regular Expression) är ett textfunktionsobjekt som våra andra textfunktioner ”VÄNSTER, HÖGER, MIDT”.

Hur aktiverar jag RegEx i Excel VBA?

Som jag sa 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 och 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 är några av de viktiga syntaxerna.
SyntaxBeskrivningExempelExempel Matchning
.Det matchar varje enskilt tecken i inmatningssträngenptSä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 varje enskilt tecken, inte mellan fästet i 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 små bokstäver från a till z
[AZ]Den matchar alla versaler från A till Ö
\ sDet matchar alla vita tecken-Matchar mellanslag, ny rad eller tabbtecken
\ SDet matchar alla karaktärer som inte är blanka-Matchningstecken är inte mellanslag, inte ny rad eller inte tabbtecken
\ dDet matchar alla ensiffriga teckenSE 5 VG 6Matchar 5 och 6
\ DDet matchar alla enskilda icke-teckenSE 5 VG 6Matchar SEVG

Egenskaper och metoder för RegEx-objekt

Som 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 stora och små bokstäver.
  • 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.

Du kan ladda ner denna VBA RegEx Excel-mall här - VBA RegEx Excel-mall

Koda:

Sub RegEx_Example () Dim RegEx som Object, MyString Som Sträng 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

oregelbunden

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 meddelanderutorna blir resultatet.