VBA RegEx - Ako používať regulárny výraz vo VBA Excel? (Príklady)

Čo je RegEx v programe Excel VBA?

RegEx znamená vo VBA Excel „ Regulárny výraz “ a je to sekvencia znakov, ktorá definuje vyhľadávací vzor na vyhľadanie konkrétneho vzoru znakov v reťazci hodnôt. Jednoduchým slovom „môžeme vytvoriť vzor regulárneho výrazu a použiť ho na vyhľadanie reťazca tohto vzoru.“

VBA RegEx je objektový model. Viem, že je to zastrašujúce pri pohľade na vysvetlenie, ale vec je, že povaha objektu. Jedna vec, ktorú si musíte pamätať, je, že VBA RegEx (regulárny výraz) je objekt textovej funkcie ako naše ďalšie textové funkcie, „LEFT, RIGHT, MID“.

Ako povoliť RegEx v programe Excel VBA?

Ako som povedal pre VBA, RegEx je objektový model vo VBA, rovnako ako náš externý softvér ako „MS Word“ a „MS PowerPoint“. Podobne je RegEx tiež komponentovým objektovým modelom (COM), na ktorý musíme odkazovať v editore VBA. Ak chcete povoliť RegEx, postupujte podľa nasledujúcich krokov.

Krok 1: Prejdite do editora jazyka Visual Basic (Alt + F11)

Krok 2: Prejdite na Nástroje a referencie.

Krok 3: Teraz uvidíte odkazy na projekt VBA. Posuňte zobrazenie nadol a vyberte možnosť „Microsoft VBScript Regular Expression 5.5“.

Krok 4: Teraz kliknite na, OK. K tomuto objektu RegEx môžeme teraz pristupovať v kódovaní VBA.

Príklad - Teraz vám ukážem jeden jednoduchý príklad. Predpokladajme, že máte slová „Predaj 2019, Predaj 2018 a Predaj 2017“. Ak definujete vzor ako (0 - 7), bude sa zhodovať so všetkými číslami od 0 do 7, takže naše zhody budú v každom reťazci 201, 201 a 2017.

Regulárny vzor VBA

Vzor funkcie VBA RegEx vyzerá strašidelne a jeho pochopeniu chvíľu trvá. Vidíme tu dva druhy postupnosti znakov, jeden je „literálne znaky“ a druhý „metaznaky“.

  • Doslovné znaky vyhľadávajú presnú zhodu zadaného reťazca. Napríklad postupnosť literálových znakov „EFG“ v zadanom texte jednoducho vyhľadáva všetky zhody „EFG“.
  • Metaznaky nie sú ničím iným ako kombináciou znakov s presným významom vo vzore RegEx. Toto je úplne iné ako doslovné postavy. Je to obrovská téma. Ďalej uvádzame niektoré dôležité syntaxe.
Syntax Popis Príklad Príklad zápasu
. Zhoduje sa s akýmkoľvek jedným znakom vstupného reťazca. bod Domáci miláčik Hrniec, dajte, vzor
() Zhoduje sa s akýmkoľvek jedným znakom v zátvorke vstupného reťazca. (pt) Zhoduje sa buď s p, alebo t
(^) Zhoduje sa s akýmkoľvek jedným znakom, nie medzi zátvorkou vstupného reťazca. (pt) Nezhoduje sa ani s p, ani s t
(Prvý posledný) Zhoduje sa s akýmkoľvek znakom v rozsahu uvedenom v zátvorke. (0-9) Zhoduje sa s akoukoľvek číslicou od 0 do 9
(az) Zhoduje sa s malými písmenami od a do z
(AZ) Zhoduje sa s akýmkoľvek veľkým písmenom od A po Z.
s Zhoduje sa s akýmkoľvek znakom bieleho priestoru. - Zhoduje sa s medzerou, novým riadkom alebo znakom tabulátora
S Zhoduje sa s akýmkoľvek znakom, ktorý nie je prázdny - Zhodné znaky nie sú medzera, nový riadok alebo znak tabulátora
d Zhoduje sa s ľubovoľným jednociferným znakom. SE 5 VG 6 5. a 6. zápas
D Zhoduje sa s akýmkoľvek jedným neciferným znakom SE 5 VG 6 Zhoduje sa so SEVG

Vlastnosti a metódy objektu RegEx

Rovnako ako všetky naše objektové modely, aj RegEx má svoje vlastné vlastnosti a metódy. Teraz uvidíme jeden po druhom podrobne.

Vlastnosti objektu VBA Regex

  • Vzor: Používa sa na priradenie zadaného reťazca.
  • Ignorovať malé a veľké písmená : Toto bude ignorovať veľké a malé písmená.
  • Globálne: Ak chcete nájsť všetky zhody vo vzore, potom je argumentom PRAVDA, inak bude nájdená prvá zhoda.
  • Viacriadkový: Ak chcete nájsť v nových zlomoch riadkov, môžete to použiť.

Metódy objektu RegEx

  • Test: Týmto sa testuje, či sa vzor dá nájsť v zadanom reťazci. Vráti hodnotu TRUE, ak sa zistí, alebo je NEPRAVDA.
  • Execute: Týmto sa vrátia všetky zhody vzoru s hľadajúcim reťazcom.
  • Nahradiť: Týmto sa vyhľadávací reťazec nahradí novým reťazcom.

Príklad RegEx vo VBA Excel

Teraz sa pozrite na nižšie uvedený príklad kódu VBA.

Kód:

Sub RegEx_Example () Dim RegEx ako objekt, MyString ako reťazec nastavený RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "(0-9) +" Koniec s MyString = "Dátum narodenia je rok 1985" MsgBox RegEx .Test (MyString) MyString = "Dátum narodenia je ???" MsgBox RegEx.Test (MyString) Koncový pod

pravidelné

Vo vyššie uvedenom kóde sme nastavili vzor tak, aby prehľadával číslo od 0 do 9 nasledovne.

With RegEx .Pattern = "(0-9) +" Koniec s

Premenná MyString = “Dátum narodenia je rok 1985”, ktorá obsahuje hodnoty od 0 do 9, takže naša schránka so správami vráti TRUE.

MyString = “Dátum narodenia je ???” nemá žiadne čísla od 0 do 9, takže ako výsledok v schránkach správ vráti FALSE.

Zaujímavé články...