VBA Regex

Tartalomjegyzék

Ez az oktatóanyag bemutatja a Regex használatát a VBA -ban.

Mi az a Regex?

A Regex a reguláris kifejezést jelenti. A reguláris kifejezés egy karaktersorból álló minta, amellyel egy másik karakterláncban megtalálható a megfelelő minta. A Regex használatához a VBA -ban a RegExp objektumot kell használnia.

Az [A-C] mintával kereshet és illeszthet egy nagybetűt A-tól C-ig egy sorozatból. A regex minták saját szintaxissal rendelkeznek, és karakterből vagy karaktersorozatból építhetők fel.

Egyező karakterek

A következő táblázat azt a szintaxist mutatja, amely lehetővé teszi a Regex minták létrehozását.

Minta szintaxisa Leírás Példa Találatok
. Bármelyik karakterhez illeszkedik, kivéve a vbNewLine -t f.n fan, fon, f@n, fwn
[karakterek] Egyetlen karaktert illeszt a zárójelek közé [] [fn] A ventilátorban csak az „f” vagy az „n” felelne meg
[^karakter] Egyezik minden olyan karakterrel, amely nincs zárójelben [] [^fn] Tehát megfelelne a „j” -nek az „fjn” -ben
[kezdet-vég] Egyezik a zárójelben lévő tartomány bármely karakterével [] [1-5] Egyezne a „4” és „5” kifejezéssel a „45” -ben
\ w Megfelel az alfanumerikus karaktereknek és az aláhúzásnak, de nem a szóköznek \ w Megfelelne a „c” -nek a „, c” -ben.
\ W Megfelel a nem alfanumerikus karaktereknek és az aláhúzásnak \ W Megfelelne a „@” -nak a „bb@bb” -ben
\ s Illeszkedik minden szóközhöz, például szóközhöz és tabulátorhoz \ s Egyezne ”” az „Ez”
\ S Megfelel minden nem fehér szóköz karakternek \ S Egyezne a „T” és a „h” kifejezéssel a „T h” -ban
\ d Bármely tizedesjegyű számjegyhez illeszkedik \ d Megfelelne a „7” -nek az „a7h” -ban
\ D Bármely nem decimális számjegyhez illeszkedik \ D Megfelelne a j -nek a „47j” -ben
\ Kimeneti a speciális karaktereket, amelyek lehetővé teszik azok keresését \. Megfelelne a "" kifejezésnek. „59.pQ” -ben
\ t Tab \ t Megfelelne egy lapkarakternek
\ r Kocsi vissza \ r Megfelelne a kocsi visszatérésének (vbCr)
\ n vbNewLine (vbTab) \ n Megfelelne egy új sornak

Kvantusok

A kvantorok segítségével megadhatja, hogy a minta hányszor illeszkedjen a karakterlánchoz.

Kvantus Leírás Példa Találatok
* Nulla vagy több előfordulásnak felel meg fn*a fna, fa, fnna, fnnna, fnfnnna
+ Megfelel egy vagy több előfordulásnak fn+a fna, fnna, fnfnna
? Egyezik a nullával vagy az eggyel fn? a fa, fna
{n} Sokszor egyezik az „n” betűvel d \ W {4} Megfelelne a „d…” -nek. „d…. & 5hi”
{n,} Legalább „n” számúszor egyezik d \ W {4,} Egyezne a „d…. &” Kifejezéssel a „d…. & 5hi” kifejezésben
{n, m} Egyezik n és m között d \ W {1,8} Egyezne a „d…. &&&&” kifejezéssel a „d…. &&&& 5hi” kifejezésben

Csoportosítás

A csoportosítás vagy rögzítés lehetővé teszi, hogy minta segítségével rögzítse és kinyerje a karakterlánc egy részét. Tehát nemcsak a minta illeszkedik, hanem a karakterláncnak a mintához illeszkedő része is rögzítésre kerül.

Minta Leírás Példa Talált és rögzített mérkőzések
(kifejezés) Csoportosítja és rögzíti a mintát zárójelben (\ W {4}) Csoportosítaná és rögzítené a „@@@@” címet az „1 @@@@ 1jlmba” címről

A Regex használata a VBA -ban

A Regex használatához a VBA -ban először be kell állítania a hivatkozást a VBE szerkesztőben. A VBE szerkesztőben lépjen a következőre: Eszközök> Hivatkozások> Microsoft VBScript reguláris kifejezések.

Ezek a RegExp objektum tulajdonságai:

  • Minta - A minta, amelyet a karakterlánccal való párosításhoz fog használni.
  • IgnoreCase - Ha igaz, akkor az egyezés figyelmen kívül hagyja a kis- és nagybetűket.
  • Globális - Ha igaz, akkor a karakterláncban szereplő minta minden illeszkedése megtalálható. Ha hamis, akkor csak az első egyezés található.
  • MultiLine - Ha igaz, akkor a mintaegyezés a sortörések között történik.

Ezek a RegExp objektum módszerei:

  • Teszt - Egy mintát keres egy karakterláncban, és igaz értéket ad vissza, ha talál egyezést.
  • Cserélje ki - Lecseréli a minta előfordulásait a helyettesítő karakterlánccal.
  • Végrehajtás - A minta egyezéseit adja vissza a karakterlánccal.

A minta tesztelése a karakterlánc ellen

A Teszt módszerrel ellenőrizheti, hogy a minta megfelel -e a beviteli karakterlánc sorrendjének. Az eredmény igaz, ha talál egyezést. A következő kód megmutatja, hogyan tesztelhet egy mintát egy karakterlánccal szemben:

12345678910111213 Sub RegexTestingAPattern ()Karakterlánc halványítása Egy karakterlánckéntDim regexOne objektumkéntSet regexOne = New RegExpregexOne.Pattern = "f… .a"stringOne = "000111fjo88a8"Hibakeresés.RegexOne.Test (stringOne) nyomtatásaEnd Sub

Az eredmény:

Minta cseréje karakterláncban

A Csere módszerrel lecserélheti a karakterláncban lévő egyező minta első példányát, vagy a karakterláncban lévő egyező minta összes példányát. Ha a Global érték hamis, akkor csak az első példány kerül kicserélésre. A következő kód megmutatja, hogyan kell kicserélni egy mintát egy karakterláncban:

1234567891011 Sub RegexReplacingAPattern ()Karakterlánc halványítása Egy karakterlánckéntDim regexOne objektumkéntSet regexOne = New RegExpregexOne.Pattern = "Ez a szám"regexOne.Global = HamisstringOne = "Ez a szám 718901"Hibakeresés.RegexOne.Replace (stringOne, "Ez az új szám")End Sub

Az eredmény:

A fent használt karakterlánc csak számrészének cseréjéhez használja a következő kódot:

1234567891011 Sub RegexReplacingAPattern ()Karakterlánc halványítása Egy karakterlánckéntDim regexOne objektumkéntSet regexOne = New RegExpregexOne.Pattern = "[^\ D]+"regexOne.Global = HamisstringOne = "Ez a szám 718901"Hibakeresés.RegexOne.Replace (stringOne, "777192")End Sub

Az eredmény:

Ha egy karakterlánc egy bizonyos mintájának minden példányát le szeretné cserélni, akkor a globális értéket True értékre kell állítani. A következő kód bemutatja, hogyan kell kicserélni az -A1289C- összes példányát a karakterláncban:

1234567891011 AlreggexReplacingEveryInstanceOfAPattern ()Karakterlánc halványítása Egy karakterlánckéntDim regexOne objektumkéntSet regexOne = New RegExpregexOne.Pattern = "\ W \ A \ d+C \ W"regexOne.Global = IgazstringOne = "ABC-A1289C-ABC-A1289C-ABC"Hibakeresés.RegexOne.Replace (stringOne, "IJK")End Sub

Minta illesztése és megjelenítése karakterláncban

Az Execute módszerrel egy vagy egy mintapéldányt illeszthet egy karakterláncon belül. A következő kód megmutatja, hogyan kell illeszteni és megjeleníteni a minta összes példányát a karakterláncból:

123456789101112131415161718 Sub RegexMatchingAndDisplayingAPattern ()Karakterlánc halványítása Egy karakterlánckéntDim regexOne objektumkéntSet regexOne = New RegExpregexOne.Pattern = "A.C"regexOne.Global = IgazregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AJC"Állítsa be a TheMatches = regexOne.Execute (stringOne)Minden mérkőzésre a mérkőzésekenHibakeresés. Nyomtatási egyezés. ÉrtékKövetkezőEnd Sub

Az eredmény:

Tegyük fel, hogy a fenti karakterláncból csak az -ADC -t akartuk illeszteni. A következő kód bemutatja, hogyan kell illeszteni és megjeleníteni csak a -ADC -t a karakterláncból:

123456789101112131415161718 Sub RegexMatchingAndDisplayingAPattern ()Karakterlánc halványítása Egy karakterlánckéntDim regexOne objektumkéntSet regexOne = New RegExpregexOne.Pattern = "\-\ A.C \-"regexOne.Global = HamisregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AEC"Állítsa be a TheMatches = regexOne.Execute (stringOne)Minden mérkőzésre a mérkőzésekenHibakeresés. Nyomtatási egyezés. ÉrtékKövetkezőEnd Sub

A Regex eltarthat egy ideig, amíg megtanulja, de rendkívül hatékony eszköz a szövegsorok azonosítására/kezelésére. Széles körben használják a programozási nyelveken is.

Segít a fejlesztés a helyszínen, megosztva az oldalt a barátaiddal

wave wave wave wave wave