VBA RegEx - Kako koristiti regularni izraz u VBA Excelu? (Primjeri)

Što je RegEx u programu Excel VBA?

RegEx je kratica za „ Regularni izraz “ u VBA Excelu i slijed je znakova koji definira obrazac pretraživanja za pronalaženje određenog uzorka znakova u nizu vrijednosti. Jednostavnom riječju, "možemo stvoriti obrazac regularnog izraza i pomoću njega tražiti niz tog uzorka."

VBA RegEx je objektni model. Znam da je zastrašujuće gledajući objašnjenje, ali stvar je u prirodi predmeta. Ovdje morate imati na umu da je VBA RegEx (regularni izraz) objekt tekstualne funkcije poput naših ostalih tekstualnih funkcija, „LIJEVO, DESNO, SREDINO“.

Kako omogućiti RegEx u programu Excel VBA?

Kao što sam rekao VBA-u, RegEx je objektni model u VBA-u, baš kao i naš vanjski softver poput "MS Word" i "MS PowerPoint." Slično tome, RegEx je također komponentni objektni model (COM), na koji se moramo pozvati u VBA uređivaču. Da biste omogućili RegEx, slijedite korake u nastavku.

Korak 1: Idite na Visual Basic Editor (Alt + F11)

Korak 2: Idite na Alati i reference.

Korak 3: Sad ćete vidjeti reference na VBA projekt. Pomaknite se prema dolje i odaberite "Microsoft VBScript Regular Expression 5.5."

Korak 4: Sada kliknite, u redu. Ovom RegEx objektu možemo pristupiti sada u VBA kodiranju.

Primjer - Sada ću vam pokazati jedan jednostavan primjer. Pretpostavimo da imate riječi "Prodaja 2019, prodaja 2018 i prodaja 2017". Ako obrazac definirate kao (0 - 7), podudara se sa svim brojevima između 0 i 7, tako da će naša podudaranja biti 201, 201 i 2017 u svakom nizu.

VBA RegEx uzorak

Uzorak funkcije VBA RegEx izgleda zastrašujuće i treba mu neko vrijeme da shvati obrazac. Ovdje možemo vidjeti dvije vrste niza znakova, jedan je "Doslovni znakovi", a drugi "Metaznakovi".

  • Doslovni znakovi traže točno podudaranje navedenog niza. Na primjer, doslovni niz znakova "EFG" jednostavno traži sva podudaranja "EFG" u navedenom tekstu.
  • Metaznakovi nisu ništa drugo do kombinacija znakova s ​​točnim značenjem u uzorku RegEx. Ovo je potpuno drugačije od doslovnih likova. Ogromna je tema koju treba pokriti. Ispod su neke od važnih sintaksa.
Sintaksa Opis Primjer Primjer podudaranja
. Odgovara bilo kojem pojedinačnom znaku ulaznog niza. pt Ljubimac. Lonac, put, uzorak
() Podudara se s bilo kojim pojedinačnim znakom između zagrada ulaznog niza. (pt) Odgovara ili p ili t
(^) Podudara se s bilo kojim pojedinačnim znakom, ne između zagrade ulaznog niza. (pt) Ne podudara se ni s p ni s t
(Prvi zadnji) Podudara se s bilo kojim znakom između raspona navedenog u zagradi. (0-9) Odgovara bilo kojoj znamenci od 0 do 9
(az) Podudara se s bilo kojim malim slovom od a do z
(AZ) Odgovara bilo kojem velikom slovu od A do Ž
s Odgovara bilo kojem razmaku. - Podudara se s razmakom, novom linijom ili znakom kartice
S Odgovara bilo kojem znaku koji nije razmak - Podudarni znakovi nisu razmak, nije nova crta ili nisu znakovi kartice
d Odgovara bilo kojem jednoznamenkastom znaku. SE 5 VG 6 Utakmice 5 i 6
D Odgovara bilo kojem pojedinačnom znaku koji nije znamenkasti SE 5 VG 6 Podudara se sa SEVG-om

Svojstva i metode RegEx objekta

Kao i svi naši objektni modeli, i RegEx ima svoja svojstva i metode. Sad ćemo vidjeti jednog po jednog u detalje.

Svojstva VBA Regex objekta

  • Uzorak: Koristi se za podudaranje s navedenim nizom.
  • Ignore Case: Ovo je zanemarivanje velikih i malih slova.
  • Općenito: Ako želite pronaći sva podudaranja u uzorku, tada je argument ISTINA, inače će se pronaći prvo podudaranje.
  • Višeredni: ako želite pronaći nove prelome redaka, možete to koristiti.

Metode RegEx objekta

  • Test: Ovo je za testiranje može li se uzorak pronaći u navedenom nizu. Ovo će vratiti TRUE ako je pronađeno ili FALSE.
  • Izvrši: Ovo će vratiti sva podudaranja uzorka prema nizu za pronalaženje.
  • Zamijeni: Ovo će zamijeniti niz pretraživanja novim nizom.

Primjer RegExa u VBA Excelu

Sada pogledajte donji primjer VBA koda.

Kodirati:

Sub RegEx_Example () Zatamni RegEx kao objekt, MyString kao niz Postavi RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "(0-9) +" Kraj s MyString = "Datum rođenja je 1985" MsgBox RegEx .Test (MyString) MyString = "Datum rođenja je ???" MsgBox RegEx.Test (MyString) Kraj Sub

redovito

U gornjem kodu postavili smo obrazac za pretraživanje broja od 0 do 9 na sljedeći način.

Uz RegEx .Pattern = "(0-9) +" Završi sa

Tada varijabla MyString = "Datum rođenja je 1985. godina" sadrži vrijednosti od 0 do 9, tako da će naš okvir za poruke vratiti TRUE.

MyString = "Datum rođenja je ???" nema brojeve od 0 do 9, pa će vratiti FALSE kao rezultat okvira za poruke.

Zanimljivi članci...