VBA RegEx - Hoe reguliere expressie te gebruiken in VBA Excel? (Voorbeelden)

Wat is RegEx in Excel VBA?

RegEx staat voor " Regular Expression " in VBA Excel en is een reeks tekens die het zoekpatroon definieert voor het vinden van een specifiek patroon van tekens in een reeks waarden. In een eenvoudig woord: "we kunnen een reguliere-expressiepatroon maken en dit gebruiken om naar de tekenreeks van dat patroon te zoeken."

VBA RegEx is een objectmodel. Ik weet dat het intimiderend is door naar de verklaring te kijken, maar het punt is dat de aard van het object. Een ding dat u hier moet onthouden, is dat VBA RegEx (reguliere expressie) een tekstfunctieobject is, net als onze andere tekstfuncties, "LINKS, RECHTS, MIDDEN".

Hoe RegEx in Excel VBA inschakelen?

Zoals ik VBA vertelde, is RegEx een objectmodel in VBA, net als onze externe software zoals "MS Word" en "MS PowerPoint". Evenzo is RegEx ook een Component Object Model (COM), waarnaar we moeten verwijzen in de VBA-editor. Volg de onderstaande stappen om RegEx in te schakelen.

Stap 1: Ga naar Visual Basic Editor (Alt + F11)

Stap 2: Ga naar Tools en referenties.

Stap 3: Nu ziet u verwijzingen naar het VBA-project. Scroll naar beneden en selecteer "Microsoft VBScript Regular Expression 5.5."

Stap 4: Klik nu op, OK. We hebben nu toegang tot dit RegEx-object in VBA-codering.

Voorbeeld - Ik zal u nu een eenvoudig voorbeeld laten zien. Stel dat u de woorden "Verkoop 2019, Verkoop 2018 en Verkoop 2017" hebt. Als u het patroon definieert als (0 - 7), komt het overeen met alle getallen tussen 0 en 7, dus onze overeenkomsten zijn 201, 201 en 2017 in elke string.

VBA RegEx-patroon

Het patroon van de VBA RegEx-functie ziet er intimiderend uit en het kost wat tijd om het patroon te begrijpen. We kunnen hier twee soorten van een reeks tekens zien, de ene is "Letterlijke tekens" en de andere is "Metatekens".

  • Letterlijke tekens zoeken naar de exacte overeenkomst van de opgegeven tekenreeks. De letterlijke tekenreeks "EFG" zoekt bijvoorbeeld eenvoudig naar alle overeenkomsten van "EFG" in de opgegeven tekst.
  • Metatekens zijn niets anders dan een combinatie van tekens met een exacte betekenis in het RegEx-patroon. Dit is totaal anders dan letterlijke karakters. Het is een enorm onderwerp om te behandelen. Hieronder staan ​​enkele van de belangrijke syntaxis.
Syntaxis Omschrijving Voorbeeld Voorbeeld Match
. Het komt overeen met elk afzonderlijk teken van de invoertekenreeks. pt Pet. Pot, Put, Patroon
() Het komt overeen met elk willekeurig teken tussen de haakjes van een invoertekenreeks. (pt) Het komt overeen met p of t
(^) Het komt overeen met elk afzonderlijk teken, niet tussen de haakjes van een invoertekenreeks. (pt) Het komt niet overeen met p of t
(Eerste Laatste) Het komt overeen met elk teken tussen het bereik in de haak. (0-9) Het komt overeen met elk cijfer van 0 tot 9
(az) Het komt overeen met alle kleine letters van a tot z
(AZ) Het komt overeen met elk hoofdletter van A tot Z
s Het komt overeen met elk witruimteteken. - Komt overeen met spatie, nieuwe regel of tabteken
S Het komt overeen met elk niet-witruimteteken - Overeenkomende tekens zijn geen spatie, geen nieuwe regel of geen tabteken
d Het komt overeen met elk eencijferig teken. SE 5 VG 6 Wedstrijden 5 en 6
D Het komt overeen met elk niet-cijferig teken SE 5 VG 6 Komt overeen met SEVG

Eigenschappen en methoden van RegEx-object

Net als al onze objectmodellen heeft ook RegEx zijn eigen eigenschappen en methoden. Nu zullen we een voor een in detail bekijken.

Eigenschappen van VBA Regex-object

  • Patroon: dit wordt gebruikt om overeen te komen met de opgegeven tekenreeks.
  • Ignore Case: Dit is om hoofdletters en kleine letters te negeren.
  • Globaal: als u alle overeenkomsten in het patroon wilt vinden, dan is TRUE het argument, anders wordt de eerste overeenkomst gevonden.
  • Meerdere regels : als u nieuwe regeleinden wilt zoeken, kunt u dit gebruiken.

Methods of RegEx Object

  • Test: This is to test whether the pattern can be found in the provided string. This will return TRUE if found or else FALSE.
  • Execute: This will return all the matches of the pattern against the finding string.
  • Replace: This will replace the search string with the new string.

Example of RegEx in VBA Excel

Now take a look at the below example VBA code.

Code:

Sub RegEx_Example() Dim RegEx As Object, MyString As String Set RegEx = CreateObject("VBScript.RegExp") With RegEx .Pattern = "(0-9)+" End With MyString = "Date of Birth year is 1985" MsgBox RegEx.Test(MyString) MyString = "Date of Birth year is ???" MsgBox RegEx.Test(MyString) End Sub

regular

In de bovenstaande code hebben we het patroon ingesteld om het nummer van 0 tot 9 als volgt te zoeken.

With RegEx .Pattern = "(0-9) +" Eindigen met

Dan is de variabele MyString = "Geboortedatum jaar is 1985", dit bevat de waarden van 0 tot 9, dus ons berichtvenster zal TRUE retourneren.

MyString = "Geboortedatum is ???" heeft geen nummers van 0 tot 9, dus retourneert FALSE als het resultaat van de berichtvakken.

Interessante artikelen...