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 vzor regulárního výrazu 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 zde musíte pamatovat, 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 regulární výraz 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), bude odpovídat všem číslům od 0 do 7, takže naše shody budou 201, 201 a 2017 v každém řetězci.

VBA RegEx vzor

Vzor funkce VBA RegEx vypadá zastrašující a pochopení vzoru trvá nějakou dobu. 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. 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 Mazlíček 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, který není prázdný - 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á libovolnému jednomístnému 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 nové konce řá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.

Kód:

Sub RegEx_Example () Dim RegEx As Object, MyString As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "(0-9) +" End With MyString = "Datum narození je rok 1985" MsgBox RegEx .Test (MyString) MyString = "Datum roku narození je ???" MsgBox RegEx.Test (MyString) End Sub

pravidelný

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) +" End With

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 polí zpráv.

Zajímavé články...