VBA RegEx | Kuidas kasutada regulaaravaldist VBA Excelis? (Näited)

Mis on RegEx Exceli VBA-s?

RegEx tähistab VBA Excelis „ regulaaravaldist ” ja on tähemärkide jada, mis määratleb otsingumustri väärtuste stringist konkreetse tähemärgi leidmiseks. Lihtsa sõnaga "saame luua regulaaravaldise mustri ja kasutada seda selle mustri stringi otsimiseks".

VBA RegEx on objektimudel. Ma tean, et see on selgitust vaadates hirmutav, kuid asi on selles, et objekti olemus. Üks asi, mida peate siin meeles pidama, on VBA RegEx (regulaaravaldus) on tekstifunktsiooni objekt nagu meie teisedki tekstifunktsioonid „VASAK, PAREM, KESK“.

Kuidas lubada RegEx Excelis VBA-s?

Nagu ma ütlesin VBA-le, on RegEx VBA-s objektimudel nagu ka meie väline tarkvara nagu „MS Word” ja „MS PowerPoint”. Samamoodi on RegEx ka komponentobjektide mudel (COM), millele peame viitama VBA-redaktoris. RegExi lubamiseks toimige järgmiselt.

1. samm: minge Visual Basicu redaktorisse (Alt + F11)

2. samm: minge jaotisse Tööriistad ja viited.

3. samm: nüüd näete viiteid VBA projektile. Kerige alla ja valige „Microsoft VBScript Regular Expression 5.5”

4. samm: klõpsake nüüd nuppu OK. Sellele RegExi objektile pääseme juurde nüüd VBA-kodeeringus.

Näide - nüüd näitan teile ühte lihtsat näidet. Oletame, et teil on sõnad „Müük 2019, Müük 2018 ja Müük 2017”. Kui määrate mustri väärtuseks [0 - 7], sobib see kõigi arvudega vahemikus 0 kuni 7, seega on meie vasted igas stringis 201, 201 ja 2017.

VBA RegEx muster

Funktsiooni VBA RegEx muster näeb välja hirmutav ja mustri mõistmiseks kulub veidi aega. Näeme kahte sorti tähemärkide jada: üks on “Sõnasõnalised tähemärgid” ja teine ​​“Metamärgid”.

  • Sõnasõnalised tähemärgid otsivad pakutava stringi täpset vastet. Näiteks otsib sõnasõnaline tähemärkide järjestus „EFG” lihtsalt esitatud tekstist kõiki „EFG” vasteid.
  • Metamärgid pole muud kui RegExi mustris täpse tähendusega tähemärkide kombinatsioon. See on täiesti erinev kui sõnasõnalised tegelased. See on tohutu teema, mida käsitleda, allpool on toodud mõned olulised süntaksid.
Süntaks Kirjeldus Näide Näite vaste
. See sobib sisestusstringi mis tahes üksikmärgiga pt Lemmikloom. Pot, pane, muster
[] See sobib sisestusstringi sulgudes olevate üksikute märkidega [pt] See sobib kas p või t
[^] See sobib ükskõik millise tähemärgiga, mitte sisendstringi sulgudes [^ pt] See ei sobi ei p ega t-ga
[Esimene Viimane] See sobib sulgudes toodud vahemiku mis tahes tähemärgiga [0–9] See sobib mis tahes numbriga 0–9
[az] See sobib mis tahes väiketähega alates a kuni z
[AZ] See sobib kõigi suurtähtedega A-st Z-ni
\ s See sobib kõigi tühimärkidega - Sobib tühiku, uue rea või vahelehe märgiga
\ S See sobib kõigi mitte-valgete ruumidega tegelastega - Vastemärgid ei ole tühik, mitte uus rida ega ka vahekaart
\ d See sobib mis tahes ühekohalise märgiga SE 5 VG 6 5. ja 6. mäng
\ D See sobib mis tahes ühe mittekohase tähemärgiga SE 5 VG 6 Vastab SEVG-le

RegExi objekti omadused ja meetodid

Nagu kõigil meie objektimudelitel, on ka RegExil oma omadused ja meetodid. Nüüd näeme ükshaaval üksikasjalikult.

VBA Regex Object atribuudid

  • Muster: seda kasutatakse antud stringi sobitamiseks.
  • Juhtumi ignoreerimine: see tähendab suur- ja väiketähtede eiramist.
  • Üldine: kui soovite leida mustrist kõik vasted, siis on argument TRUE või muidu leitakse esimene vaste.
  • Mitmerealine: kui soovite leida uusi reavahetusi, saate seda kasutada.

RegExi objekti meetodid

  • Test: Selle eesmärk on testida, kas muster on leitud stringist leitav. See tagastab väärtuse TÕENE, kui see leitakse, või muidu VÄÄR.
  • Execute: see tagastab kõik mustri vasted leidmisstringi suhtes.
  • Asenda: see asendab otsingu stringi uue stringiga.

RegExi näide VBA Excelis

Nüüd vaadake allpool toodud VBA koodi näidet.

Selle VBA RegEx Exceli malli saate alla laadida siit - VBA RegEx Exceli mall

Kood:

AlamregEx_Example () Dim RegEx objektina, MyString stringina Komplekt RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "[0-9] +" End WithString = "Sünnikuupäev on 1985" MsgBox RegEx .Test (MyString) MyString = "Sünnikuupäeva aasta on ???" MsgBox RegEx.Test (MyString) Lõpp-alam

fregulaarne

Ülaltoodud koodis oleme seadnud mustri otsima numbrit 0 kuni 9 järgmiselt.

 RegExiga .Pattern = "[0-9] +" Lõpeta 

Siis hoiab muutuja MyString = "Sünniaeg on 1985" väärtusi vahemikus 0 kuni 9, nii et meie sõnumikast tagastab TÕENE.

MyString = "Sünnikuupäeva aasta on ???" tal pole ühtegi numbrit vahemikus 0 kuni 9, seega tagastatakse sõnumikastide tulemusel VÄÄR