VBA RegEx - Kuinka käyttää säännöllistä lauseketta VBA Excelissä? (Esimerkkejä)

Mikä on RegEx Excel VBA: ssa?

RegEx tarkoittaa " säännöllinen lauseke " VBA Excelissä ja on merkkijono, joka määrittää hakumallin tietyn merkkikuvion löytämiseksi arvojonosta. Yksinkertaisella sanalla "voimme luoda säännöllisen lausekkeen ja käyttää sitä sen merkkijonon etsimiseen".

VBA RegEx on olomalli. Tiedän, että se on pelottavaa katsomalla selitystä, mutta asia on, että kohteen luonne. Yksi asia, joka sinun on muistettava tässä, on VBA RegEx (säännöllinen lauseke) on tekstitoimintoobjekti, kuten muutkin tekstitoiminnot "VASEN, OIKEA, KESKI".

Kuinka ottaa RegEx käyttöön Excel VBA: ssa?

Kuten kerroin VBA: lle, RegEx on VBA: n objektimalli, aivan kuten ulkoiset ohjelmistomme, kuten "MS Word" ja "MS PowerPoint". Samoin RegEx on myös komponenttiobjektimalli (COM), johon meidän on viitattava VBA-editorissa. Ota RegEx käyttöön noudattamalla seuraavia ohjeita.

Vaihe 1: Siirry Visual Basic Editoriin (Alt + F11)

Vaihe 2: Siirry kohtaan Työkalut ja viitteet.

Vaihe 3: Nyt näet viittauksia VBA-projektiin. Vieritä alaspäin ja valitse Microsoft VBScript Regular Expression 5.5.

Vaihe 4: Napsauta nyt, OK. Voimme käyttää tätä RegEx-objektia nyt VBA-koodauksessa.

Esimerkki - Näytän nyt yhden yksinkertaisen esimerkin. Oletetaan, että sinulla on sanat "Myynti 2019, Myynti 2018 ja Myynti 2017". Jos määrität kuvion arvoksi (0-7), se vastaa kaikkia lukuja välillä 0-7, joten vastaavuuksemme ovat 201, 201 ja 2017 jokaisessa merkkijonossa.

VBA RegEx -malli

VBA RegEx -toiminnon malli näyttää pelottavalta, ja sen ymmärtäminen vie jonkin aikaa. Voimme nähdä kahdenlaisia ​​merkkijonoja tässä: "Kirjaimelliset merkit" ja toinen "Metahahmot".

  • Kirjaimelliset merkit etsivät toimitetun merkkijonon tarkkaa vastaavuutta. Esimerkiksi kirjaimellinen merkkijono "EFG" etsii yksinkertaisesti kaikkia sanan "EFG" vastaavuuksia toimitetusta tekstistä.
  • Metahahmot ovat vain yhdistelmä merkkejä, joilla on tarkka merkitys RegEx-kuviossa. Tämä on täysin erilainen kuin kirjaimelliset hahmot. Se on valtava aihe. Alla on joitain tärkeitä syntaksia.
Syntaksi Kuvaus Esimerkki Esimerkki ottelusta
. Se vastaa mitä tahansa syötemerkkijonon yksittäistä merkkiä. pt Lemmikki. Ruukku, Laita, Kuvio
() Se vastaa mitä tahansa yksittäistä merkkiä syötemerkkijonon suluissa. (pt) Se vastaa joko p tai t
(^) Se vastaa mitä tahansa yksittäistä merkkiä, ei syötemerkkijonon suluissa. (pt) Se ei vastaa p tai t
(Ensimmäinen viimeinen) Se vastaa mitä tahansa merkkiä hakasulkeessa olevan alueen välillä. (0-9) Se vastaa mitä tahansa numeroa 0-9
(az) Se vastaa kaikkia pieniä kirjaimia a-z
(AZ) Se vastaa kaikkia isoja kirjaimia A: sta Z: hen
s Se vastaa mitä tahansa välilyöntiä. - Vastaa välilyöntiä, uutta riviä tai sarkainmerkkiä
S Se sopii kaikkiin muihin kuin välilyönteihin - Vastaavat merkit eivät ole välilyönti, ei Uusi rivi tai välilehti
d Se vastaa mitä tahansa yksinumeroista merkkiä. SE 5 VG 6 Ottelut 5 ja 6
D Se vastaa mitä tahansa yksittäistä ei-numeroista merkkiä SE 5 VG 6 Vastaa SEVG: tä

RegEx-objektin ominaisuudet ja menetelmät

Kuten kaikilla objektimalleillamme, myös RegExillä on omat ominaisuudet ja menetelmät. Nyt näemme yksi kerrallaan yksityiskohtaisesti.

VBA Regex Object -ominaisuudet

  • Kuvio: Tätä käytetään vastaamaan toimitettua merkkijonoa.
  • Ohita kirjainkoko : Tämä ohittaa isot ja pienet kirjaimet.
  • Yleinen: Jos haluat löytää kaikki osumat kuviosta, TOSI on argumentti, muuten ensimmäinen vastaavuus löytyy.
  • Monirivinen: Jos haluat löytää uusia rivinvaihtoja, voit käyttää tätä.

RegEx-objektin menetelmät

  • Testi: Tällä testataan, löytyykö kuvio mukana toimitetusta merkkijonosta. Tämä palauttaa arvon TOSI, jos se löytyy tai muuten EPÄTOSI.
  • Suorita: Tämä palauttaa kaikki kuvion vastaavuudet löytömerkkijonoa vastaan.
  • Korvaa: Tämä korvaa hakumerkkijonon uudella merkkijonolla.

Esimerkki RegExistä VBA Excelissä

Katso nyt alla oleva esimerkki VBA-koodista.

Koodi:

Sub RegEx_Example () Hämärä RegEx objektina, MyString merkkijonona Aseta RegEx = CreateObject ("VBScript.RegExp") RegEx .Pattern = "(0-9) +" End With MyString = "Syntymäpäivä on 1985" MsgBox RegEx .Test (MyString) MyString = "Syntymäpäivä on ???" MsgBox RegEx.Test (MyString) loppuosa

säännöllinen

Edellä olevassa koodissa olemme asettaneet mallin etsimään lukua 0-9 seuraavasti.

Kun RegEx .Pattern = "(0-9) +" Lopeta

Sitten muuttuja MyString = "Syntymäpäivä on 1985" pitää arvot 0: sta 9: een, joten viestiruutu palauttaa TOSI.

MyString = "Syntymäpäivä on ???" ei ole yhtään numeroa välillä 0–9, joten palauttaa EPÄTOSI viestiruutujen tuloksena.

Mielenkiintoisia artikkeleita...