„VBA Regex“

Turinys

Ši pamoka parodys, kaip naudoti „Regex“ VBA.

Kas yra „Regex“?

Regex reiškia reguliarią išraišką. Įprasta išraiška yra modelis, sudarytas iš simbolių sekos, kurią galite naudoti norėdami rasti atitinkamą modelį kitoje eilutėje. Norėdami naudoti „Regex“ VBA, turite naudoti „RegExp“ objektą.

Tokį modelį kaip [A-C] galima naudoti norint surasti ir suderinti didžiąsias raides nuo A iki C iš sekos. Reguliariosios raidės modeliai turi savo sintaksę ir gali būti sukurti naudojant simbolį ar simbolių seką.

Atitinkantys personažai

Šioje lentelėje parodyta sintaksė, kuri leis jums sukurti reguliariųjų reiškinių modelius.

Šablono sintaksė apibūdinimas Pavyzdys Rastos rungtynės
. Atitinka bet kurį atskirą simbolį, išskyrus „vbNewLine“ f.n ventiliatorius, fon, f@n, fwn
[personažai] Atitinka bet kurį simbolį tarp skliaustų [] [fn] Ventiliatoriuje tiktų „f“ arba „n“
[^simbolių] Atitinka bet kurį simbolį, kuris nėra tarp skliaustų [] [^fn] Taigi „fjn“ atitiktų „j“
[pradžia-pabaiga] Atitinka bet kokį simbolį, kuris yra skliausteliuose esančio diapazono dalis [] [1-5] „45“ atitiktų „4“ ir „5“
\ w Atitinka raidinius ir skaitmeninius simbolius bei pabraukimą, bet ne tarpą \ w „C“ atitiktų „c“.
\ W Atitinka visus ne raidinius ir skaitmeninius simbolius ir pabraukimą \ W „Bb@bb“ atitiktų „@“
\ s Atitinka bet kokį tuščią tarpą, pvz., Tarpus ir skirtukus \ s Tiktų ““ skiltyje „Tai yra“
\ S Atitinka bet kurį ne baltos spalvos simbolį \ S „T h“ atitiktų „T“ ir „h“
\ d Atitinka bet kurį skaičių po kablelio \ d „A7h“ atitiktų „7“
\ D Atitinka bet kurį ne dešimtainį skaitmenį \ D Tiktų j „47j“
\ Išvengia specialių simbolių, kurie leidžia jums jų ieškoti \. Tiktų „“. „59.pQ“
\ t Skirtukas \ t Tiktų skirtuko simbolis
\ r Vežimo grąžinimas \ r Tiks vežimo grąžinimas (vbCr)
\ n vbNewLine (vbTab) \ n Tiktų naujai eilutei

Kvantoriai

Galite naudoti kiekybinius parametrus, norėdami nurodyti, kiek kartų norite, kad modelis atitiktų eilutę.

Kvantorius apibūdinimas Pavyzdys Rastos rungtynės
* Atitinka nulį ar daugiau įvykių fn*a fna, fa, fnna, fnnna, fnfnnna
+ Atitinka vieną ar daugiau įvykių fn+a fna, fnna, fnfnna
? Atitinka nulį arba vieną fn? a fa, fna
{n} Daug kartų atitinka „n“ d \ W {4} Tiktų „d…“. „d…. ir 5hi“
{n,} Atitinka bent „n“ kartų skaičių d \ W {4,} Tiktų „d…. &“ Iš „d…. & 5hi“
{n, m} Atitinka n ir m kartų skaičių d \ W {1,8} Atitiktų „d…. &&&&“ „d…. &&&& 5hi“

Grupavimas

Grupavimas arba fiksavimas leidžia naudoti modelį, kad užfiksuotumėte ir ištrauktumėte eilutės dalį. Taigi ne tik modelis suderinamas, bet ir užfiksuojama tą eilutę atitinkanti eilutės dalis.

Raštas apibūdinimas Pavyzdys Rastos ir užfiksuotos rungtynės
(išraiška) Grupuoja ir fiksuoja modelį skliausteliuose (\ W {4}) Sugrupuotų ir užfiksuotų „@@@@“ iš „1 @@@@ 1jlmba“

Kaip naudoti „Regex“ VBA

Norėdami naudoti „Regex“ VBA, pirmiausia turite nustatyti nuorodą VBE redaktoriuje. VBE redaktoriuje eikite į Įrankiai> Nuorodos> „Microsoft VBScript“ reguliariosios išraiškos.

Tai yra „RegExp“ objekto savybės:

  • Raštas - Šablonas, kurį naudosite derindami prie eilutės.
  • Ignoruoti atvejį - Jei tiesa, tada atitikimas nepaiso raidžių raidžių.
  • Pasaulinis - Jei tiesa, tada randamos visos eilutės modelio atitiktys. Jei klaidinga, randama tik pirmoji atitiktis.
  • „MultiLine“ - Jei tiesa, šablonų atitikimas įvyksta tarp eilučių pertraukų.

Tai yra „RegExp“ objekto metodai:

  • Bandymas - Ieškoma eilutės šablono ir grąžina „True“, jei randama atitiktis.
  • Pakeisti - Pakeičia modelio atsiradimą pakeičiamąja eilute.
  • Vykdyti - Grąžina modelio atitikmenis prieš eilutę.

Šablono atitikimo prieš eilutę testavimas

Galite naudoti bandymo metodą, kad patikrintumėte, ar modelis atitinka įvesties eilutės seką. Rezultatas yra teisingas, jei randama atitiktis. Šis kodas parodys, kaip išbandyti modelį pagal eilutę:

12345678910111213 Subreguliarusis testavimasPattern ()Dim stringOne As StringDim regexOne kaip objektasNustatyti regexOne = New RegExpregexOne.Pattern = "f… .a"stringOne = "000111fjo88a8"Derinti. Spausdinti regexOne.Test (stringOne)Pabaiga Sub

Rezultatas yra toks:

Šablono pakeitimas eilutėje

Galite naudoti pakeitimo metodą, kad pakeistumėte pirmąjį atitikimo modelio egzempliorių eilutėje arba visus atitikimo modelio atvejus eilutėje. Jei „Global“ nustatyta kaip „False“, pakeičiamas tik pirmasis egzempliorius. Šis kodas parodys, kaip pakeisti modelį eilutėje:

1234567891011 Subreguliarusis tekstasReplacingAPattern ()Dim stringOne As StringDim regexOne kaip objektasNustatyti regexOne = New RegExpregexOne.Pattern = "Tai skaičius"regexOne.Global = NetiesastringOne = "Tai skaičius 718901"Derinti. Spausdinti regexOne.Replace (stringOne, „Tai naujas numeris“)Pabaiga Sub

Rezultatas yra toks:

Norėdami pakeisti tik aukščiau naudotos eilutės skaičių, naudokite šį kodą:

1234567891011 Subreguliarusis tekstasReplacingAPattern ()Dim stringOne As StringDim regexOne kaip objektasNustatyti regexOne = New RegExpregexOne.Pattern = "[^\ D]+"regexOne.Global = NetiesastringOne = "Tai skaičius 718901"Debug.Print regexOne.Replace (stringOne, "777192")Pabaiga Sub

Rezultatas yra toks:

Jei norite pakeisti kiekvieną eilutės tam tikro šablono egzempliorių, nustatykite visuotinę vertę „True“. Šis kodas parodo, kaip pakeisti kiekvieną eilutės -A1289C- egzempliorių:

1234567891011 Subreguliarioji reikšmėReplacingEveryInstanceOfAPattern ()Dim stringOne As StringDim regexOne kaip objektasNustatyti regexOne = New RegExpregexOne.Pattern = "\ W \ A \ d+C \ W"regexOne.Global = TiesastringOne = "ABC-A1289C-ABC-A1289C-ABC"Derinti. Spausdinti regexOne.Replace (stringOne, „IJK“)Pabaiga Sub

Šablono atitikimas ir rodymas eilutėje

Galite naudoti vykdymo metodą, kad atitiktų vieną ar visus modelio egzempliorius eilutėje. Šis kodas parodo, kaip suderinti ir rodyti visus eilutės šablono egzempliorius:

123456789101112131415161718 Subreguliarusis atitikmuoMatchingAndDisplayingAPattern ()Dim stringOne As StringDim regexOne kaip objektasNustatyti regexOne = New RegExpregexOne.Pattern = "A.C"regexOne.Global = TiesaregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AJC"Nustatykite theMatches = regexOne.Execute (stringOne)Kiekvienoms rungtynėms rungtynėseDerinti. Spausdinti atitiktį. VertėKitasPabaiga Sub

Rezultatas yra toks:

Tarkime, kad norėjome tik suderinti -ADC- iš aukščiau pateiktos eilutės. Šis kodas parodo, kaip suderinti ir rodyti tik -ADC- iš eilutės:

123456789101112131415161718 Subreguliarusis atitikmuoMatchingAndDisplayingAPattern ()Dim stringOne As StringDim regexOne kaip objektasNustatyti regexOne = New RegExpregexOne.Pattern = "\-\ A.C \" "regexOne.Global = NetiesaregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AEC"Nustatykite theMatches = regexOne.Execute (stringOne)Kiekvienoms rungtynėms rungtynėseDerinti. Spausdinti atitiktį. VertėKitasPabaiga Sub

„Regex“ išmokti gali prireikti šiek tiek laiko, tačiau tai yra labai galingas įrankis identifikuoti/manipuliuoti teksto eilutėmis. Jis taip pat plačiai naudojamas programavimo kalbose.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave