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 ExcelKó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.