VBA RegEx | Jak používat regulární výraz ve VBA Excel? (Příklady)

Co je RegEx v aplikaci Excel VBA?

RegEx znamená ve VBA Excel „ Regular Expression “ a je to posloupnost znaků, která definuje vyhledávací vzor pro vyhledání konkrétního vzoru znaků v řetězci hodnot. Jednoduše řečeno „můžeme vytvořit regulární výrazový vzor a použít jej k vyhledání řetězce tohoto vzoru“.

VBA RegEx je objektový model. Vím, že je to zastrašující při pohledu na vysvětlení, ale jde o to, že povaha objektu. Jedna věc, kterou si musíte zapamatovat, je VBA RegEx (regulární výraz) je objekt textové funkce jako naše další textové funkce „LEFT, RIGHT, MID“.

Jak povolit RegEx v aplikaci Excel VBA?

Jak jsem řekl, VBA RegEx je objektový model ve VBA stejně jako náš externí software jako „MS Word“ a „MS PowerPoint“. Podobně je RegEx také Component Object Model (COM), na který musíme odkazovat v editoru VBA. Chcete-li povolit RegEx, postupujte podle následujících kroků.

Krok 1: Přejít na editor jazyka (Alt + F11)

Krok 2: Přejít na Nástroje a odkazy.

Krok 3: Nyní uvidíte odkazy na projekt VBA. Přejděte dolů a vyberte „Microsoft VBScript Regular Expression 5.5“

Krok 4: Nyní klikněte na OK. K tomuto objektu RegEx můžeme nyní přistupovat v kódování VBA.

Příklad - Nyní vám ukážu jeden jednoduchý příklad. Předpokládejme, že máte slova „Prodej 2019, Prodej 2018 a Prodej 2017“. Pokud definujete vzor jako [0 - 7], odpovídá všem číslům od 0 do 7, takže naše shody budou v každém řetězci 201, 201 a 2017.

VBA RegEx vzor

Vzor funkce VBA RegEx vypadá zastrašující a pochopení vzoru nějakou dobu trvá. Můžeme vidět dva druhy posloupnosti znaků, jeden je „literální znaky“ a druhý „metaznaky“.

  • Doslovné znaky hledají přesnou shodu zadaného řetězce. Například doslovná posloupnost znaků „EFG“ jednoduše hledá všechny shody „EFG“ v uvedeném textu.
  • Metaznaky nejsou nic jiného než kombinace znaků s přesným významem ve vzoru RegEx. To je úplně jiné než doslovné postavy. Je to obrovské téma k pokrytí, níže uvádíme některé důležité syntaxe.
Syntax Popis Příklad Příklad zápasu
. Odpovídá libovolnému jednomu znaku vstupního řetězce pt Pet. Hrnec, Put, Vzor
[] Odpovídá libovolnému jednomu znaku mezi závorkou vstupního řetězce [pt] Odpovídá buď p, nebo t
[^] Odpovídá libovolnému jednomu znaku, nikoli mezi závorkou vstupního řetězce [^ pt] Neshoduje se ani s p, ani s t
[První poslední] Odpovídá libovolnému znaku v rozsahu uvedeném v závorce [0-9] Odpovídá jakékoli číslici od 0 do 9
[az] Shoduje se s malými písmeny od a do z
[AZ] Shoduje se s libovolnými velkými písmeny od A do Z.
\ s Odpovídá libovolnému znaku prázdného místa - Shoduje se s mezerou, novým řádkem nebo znakem tabulátoru
\ S Odpovídá libovolnému znaku bez mezery - Odpovídající znaky nejsou mezera, nový řádek ani znaky tabulátoru
\ d Odpovídá libovolnému jednomístnému znaku SE 5 VG 6 Zápasy 5 a 6
\ D Odpovídá jakémukoli jednomu znaku bez znaku SE 5 VG 6 Odpovídá SEVG

Vlastnosti a metody objektu RegEx

Stejně jako všechny naše objektové modely má i RegEx své vlastní vlastnosti a metody. Nyní uvidíme jeden po druhém podrobně.

Vlastnosti objektu VBA Regex

  • Pattern: This is used to match the provided string.
  • Ignorovat velká písmena : Tímto způsobem ignorujete velká a malá písmena.
  • Globální: Pokud chcete najít všechny shody ve vzoru, pak je argumentem PRAVDA, jinak bude nalezena první shoda.
  • Víceřádkový : Chcete-li najít přes nové zalomení řádků, můžete použít toto.

Metody objektu RegEx

  • Test: Toto slouží k otestování, zda lze vzor nalézt v zadaném řetězci. Vrátí hodnotu TRUE, pokud je nalezena, nebo FALSE.
  • Provedení: Tím se vrátí všechny shody vzoru proti vyhledávacímu řetězci.
  • Nahradit: Tím se vyhledávací řetězec nahradí novým řetězcem.

Příklad RegEx ve VBA Excel

Nyní se podívejte na níže uvedený příklad kódu VBA.

Tuto šablonu VBA RegEx Excel si můžete stáhnout zde - Šablona VBA RegEx Excel

Kód:

Sub RegEx_Example () Dim RegEx jako objekt, MyString jako řetězec nastaven RegEx = CreateObject ("VBScript.RegExp") s RegEx .Pattern = "[0-9] +" Konec s MyString = "Datum narození je rok 1985" MsgBox RegEx .Test (MyString) MyString = "Datum roku narození je ???" MsgBox RegEx.Test (MyString) End Sub

fregulární

Ve výše uvedeném kódu jsme nastavili vzor tak, aby prohledával číslo od 0 do 9 následujícím způsobem.

 With RegEx .Pattern = "[0-9] +" Konec s 

Proměnná MyString = „Datum narození je rok 1985“, která obsahuje hodnoty od 0 do 9, takže naše okno se zprávou vrátí TRUE.

MyString = „Datum narození je ???“ nemá žádná čísla od 0 do 9, takže vrátí FALSE jako výsledek zpráv.