VBA regeks

Sadržaj

Ovaj će vodič pokazati kako koristiti Regex u VBA -i.

Što je Regex?

Regex znači regularni izraz. Regularni izraz je uzorak sastavljen od niza znakova koje možete koristiti za pronalaženje odgovarajućeg uzorka u drugom nizu. Da biste koristili Regex u VBA, morate koristiti objekt RegExp.

Uzorak poput [A-C] može se koristiti za traženje i podudaranje velikih slova od A do C u nizu. Regex uzorci imaju svoju sintaksu i mogu se izgraditi pomoću znaka ili niza znakova.

Podudaranje likova

Sljedeća tablica prikazuje sintaksu koja će vam omogućiti izradu Regex uzoraka.

Sintaksa uzorka Opis Primjer Pronađena podudaranja
. Odgovara bilo kojem pojedinačnom znaku osim vbNewLine f.n fan, fon, f@n, fwn
[likovi] Podudara se s bilo kojim znakom između zagrada [] [fn] Odgovaralo bi samo "f" ili "n" u ventilatoru
[^likova] Odgovara svakom pojedinačnom znaku koji nije između zagrada [] [^fn] Tako bi odgovaralo "j" u "fjn"
[početak-kraj] Odgovara svakom znaku koji je dio raspona u zagradama [] [1-5] Odgovaralo bi "4" i "5" u "45"
\ w Odgovara alfanumeričkim znakovima i donjoj crti, ali ne i razmaku \ w Odgovaralo bi "c" u ", c".
\ W Odgovara svim alfanumeričkim znakovima i donjoj crti \ W Odgovaralo bi "@" u "bb@bb"
\ s Odgovara bilo kojem znaku razmaka poput razmaka i tabulatora \ s Odgovaralo bi "" u "Ovo je"
\ S Odgovara bilo kojem znaku razmaka koji nije bijeli \ S Odgovaralo bi "T" i "h" u "T h"
\ d Odgovara bilo kojoj pojedinačnoj decimalnoj znamenki \ d Odgovara "7" u "a7h"
\ D Odgovara bilo kojoj pojedinačnoj znamenci koja nije decimalna \ D Odgovaralo bi j u "47j"
\ Bježi od posebnih znakova što vam omogućuje da ih tražite \. Odgovaralo bi "." u "59.pQ"
\ t Tab \ t Odgovarao bi znaku kartice
\ r Povrat prtljage \ r Odgovara vraćanju nosača (vbCr)
\ n vbNewLine (vbTab) \ n Odgovarao bi novoj liniji

Kvantifikatori

Pomoću kvantifikatora možete odrediti koliko puta želite da se uzorak podudara s nizom.

Kvantifikator Opis Primjer Pronađena podudaranja
* Podudara se s nulom ili više pojavljivanja fn*a fna, fa, fnna, fnnna, fnfnnna
+ Podudara se s jednim ili više pojavljivanja fn+a fna, fnna, fnfnna
? Podudara se s nulom ili jedinicom fn? a fa, fna
{n} Podudara se s „n“ više puta d \ W {4} Odgovaralo bi "d …". u "d …. & 5hi"
{n,} Podudara se s najmanje "n" broj puta d \ W {4,} Odgovaralo bi "d…. &" U "d…. & 5hi"
{n, m} Podudara se između n i m broj puta d \ W {1,8} Odgovaralo bi "d…. &&&&" u "d…. &&&& 5hi"

Grupiranje

Grupiranje ili hvatanje omogućuje vam korištenje uzorka za hvatanje i izdvajanje dijela niza. Dakle, ne samo da se uzorak podudara, već se bilježi i dio niza koji odgovara uzorku.

Uzorak Opis Primjer Pronađena i zarobljena podudaranja
(izraz) Grupira i snima uzorak u zagradama (\ W {4}) Bi li se grupiralo i snimilo “@@@@” s “1 @@@@ 1jlmba”

Kako koristiti Regex u VBA

Da biste koristili Regex u VBA -i, prvo morate postaviti referencu u VBE uređivaču. U uređivaču VBE idite na Alati> Reference> Microsoft VBScript regularni izrazi.

Ovo su svojstva objekta RegExp:

  • Uzorak - Uzorak koji ćete koristiti za usklađivanje s nizom.
  • IgnoreCase - Ako je True, tada se podudaranjem zanemaruju velika i mala slova.
  • Globalno - Ako je True, tada se pronalaze sva podudaranja uzorka u nizu. Ako je False, tada se nalazi samo prvo podudaranje.
  • MultiLine - Ako je Tačno, podudaranje uzoraka događa se preko prijeloma retka.

Ovo su metode objekta RegExp:

  • Test - Traži uzorak u nizu i vraća True ako se pronađe podudaranje.
  • Zamijeniti - Zamjenjuje pojavljivanja uzorka zamjenskim nizom.
  • Izvršiti - Vraća podudaranja uzorka u niz.

Testiranje uzorka za podudaranje s nizom

Metodom testiranja možete provjeriti odgovara li uzorak nizu u ulaznom nizu. Rezultat je Tačan ako se pronađe podudaranje. Sljedeći kôd pokazat će vam kako testirati uzorak u nizu:

12345678910111213 Sub RegexTestingAPattern ()Dim stringOne As StringPriguši regexOne As ObjectPostavi regexOne = Novi RegExpregexOne.Pattern = "f… .a"stringOne = "000111fjo88a8"Debug.Print regexOne.Test (stringOne)Kraj podm

Rezultat je:

Zamjena uzorka u nizu

Pomoću metode Zamijeni možete zamijeniti prvu instancu odgovarajućeg uzorka u nizu ili sve instance odgovarajućeg uzorka u nizu. Ako je Globalno postavljeno na Netačno, zamjenjuje se samo prva instanca. Sljedeći kôd pokazat će vam kako zamijeniti uzorak u nizu:

1234567891011 PodregexReplacingAPattern ()Dim stringOne As StringPriguši regexOne As ObjectPostavi regexOne = Novi RegExpregexOne.Pattern = "Ovo je broj"regexOne.Global = NetačnostringOne = "Ovo je broj 718901"Debug.Print regexOne.Replace (stringOne, "To je novi broj")Kraj podm

Rezultat je:

Da biste zamijenili samo brojčani dio niza koji je gore korišten, upotrijebili biste sljedeći kôd:

1234567891011 PodregexReplacingAPattern ()Dim stringOne As StringPriguši regexOne As ObjectPostavi regexOne = Novi RegExpregexOne.Pattern = "[^\ D]+"regexOne.Global = NetačnostringOne = "Ovo je broj 718901"Debug.Print regexOne.Replace (stringOne, "777192")Kraj podm

Rezultat je:

Da biste zamijenili svaku instancu određenog uzorka u nizu, postavili biste globalnu vrijednost na True. Sljedeći kôd pokazuje kako zamijeniti svaku instancu -A1289C- u nizu:

1234567891011 PodregexReplacingEveryInstanceOfAPattern ()Dim stringOne As StringZatamni regexOne As ObjectPostavi regexOne = Novi RegExpregexOne.Pattern = "\ W \ A \ d+C \ W"regexOne.Global = IstinastringOne = "ABC-A1289C-ABC-A1289C-ABC"Debug.Print regexOne.Replace (stringOne, "IJK")Kraj podm

Usklađivanje i prikaz uzorka u nizu

Metodu Execute možete upotrijebiti za podudaranje jedne ili svih instanci uzorka unutar niza. Sljedeći kôd pokazuje vam kako uskladiti i prikazati sve instance uzorka iz niza:

123456789101112131415161718 PodregexMatchingAndDisplayingAPattern ()Dim stringOne As StringZatamni regexOne As ObjectPostavi regexOne = Novi RegExpregexOne.Pattern = "A.C"regexOne.Global = IstinaregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AJC"Postavite Matches = regexOne.Execute (stringOne)Za svaku utakmicu u utakmicamaOtklanjanje pogrešaka. Podudaranje ispisa.VrijednostSljedećiKraj podm

Rezultat je:

Recimo da smo samo htjeli upariti -ADC- iz gornjeg niza. Sljedeći kôd pokazuje kako upariti i prikazati samo -ADC- iz niza:

123456789101112131415161718 PodregexMatchingAndDisplayingAPattern ()Dim stringOne As StringPriguši regexOne As ObjectPostavi regexOne = Novi RegExpregexOne.Pattern = "\-\ A.C \-"regexOne.Global = NetačnoregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AEC"Postavite Matches = regexOne.Execute (stringOne)Za svaku utakmicu u utakmicamaOtklanjanje pogrešaka. Podudaranje ispisa.VrijednostSljedećiKraj podm

Regexu može trebati neko vrijeme za učenje, ali to je izuzetno moćan alat za identificiranje/manipulaciju nizovima teksta. Također se široko koristi u programskim jezicima.

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave