VBA regulaarne

Lang L: none (table-of-contents)

See õpetus näitab, kuidas Regexi VBA -s kasutada.

Mis on Regex?

Regex tähistab regulaaravaldist. Regulaaravaldis on muster, mis koosneb tähemärkide jadast, mille abil saate leida teisest stringist sobiva mustri. Regexi kasutamiseks VBA -s peate kasutama objekti RegExp.

Sellist mustrit nagu [A-C] saab kasutada jada suurtähtede A-st C otsimiseks ja sobitamiseks. Regulaarmustritel on oma süntaks ja neid saab luua tähemärgi või tähemärkide jada abil.

Sobivad tegelased

Järgmine tabel näitab süntaksit, mis võimaldab teil luua regulaaravaldisi.

Mustri süntaks Kirjeldus Näide Vasted leitud
. Sobib igale üksikule tähemärgile, välja arvatud vbNewLine f.n fänn, fon, f@n, fwn
[tegelased] Sobib suvaliste märkide vahele [] [fn] Ventilaatoris sobiks ainult f või n
[^tähemärki] Sobib igale tähemärgile, mis ei ole sulgude vahel [] [^fn] Seega sobiks sõnaga "fjn" "j"
[algus-lõpp] Sobib sulgudes vahemikku kuuluvate tähemärkidega [] [1-5] Sobiks "45" -ga "4" ja "5"
\ w Sobib tähtnumbriliste ja allakriipsutustega, kuid mitte tühikutega \ w Sobiks "c" tähega ", c".
\ W Sobib mitte-tähtnumbriliste tähemärkide ja alajoonega \ W Sobiks “bb@bb” “@” -ga
\ s Sobib tühikutega, näiteks tühikute ja sakkidega \ s Sobiks ”” jaotises „See on”
\ S Sobib igale mitte-tühikule tähemärgile \ S Sobiks tähega „T” ja „h”
\ d Sobib ühe kümnendkohaga \ d Sobiks "a7h" "7"
\ D Sobib ühele kümnendkohata numbrile \ D Sobiks sõnaga "47j"
\ Põgeneb erimärkidest, mis võimaldab teil neid otsida \. Sobiks "". jaotises „59.pQ”
\ t Tab \ t Sobiks vahelehe tegelasega
\ r Vankri tagastamine \ r Sobiks vankri tagastamisega (vbCr)
\ n vbNewLine (vbTab) \ n Sobiks uuele reale

Kvantifikaatorid

Kvantifikaatorite abil saate määrata, mitu korda soovite mustri stringiga sobitada.

Kvantifikaator Kirjeldus Näide Vasted leitud
* Sobib null või enam korda fn*a fna, fa, fnna, fnnna, fnfnnna
+ Sobib ühe või mitme juhtumiga fn+a fna, fnna, fnfnna
? Sobib nullile või ühele fn? a fa, fna
{n} Sobib mitu korda n -iga d \ W {4} Sobiks “d…”. “d…. & 5hi”
{n,} Sobib vähemalt “n” arv kordi d \ W {4,} Sobiks „d…. &” Sõnaga „d…. & 5hi”
{n, m} Sobib n ja m vahel d \ W {1,8} Sobiks „d…. &&&&” sõnaga „d…. &&&& 5hi”

Rühmitamine

Rühmitamine või jäädvustamine võimaldab mustri abil stringi osa jäädvustada ja eraldada. Seega ei sobitata mitte ainult mustrit, vaid jäädvustatakse mustriga vastav stringi osa.

Muster Kirjeldus Näide Leitud ja tabatud vasted
(väljend) Rühmitab ja salvestab mustri sulgudes (\ W {4}) Kas grupeeriks ja jäädvustaks@@@@ "1 @@@@ 1jlmba"

Kuidas kasutada Regexi VBA -s

Regexi kasutamiseks VBA -s peate esmalt viite seadistama VBE redaktoris. Minge VBE redaktoris aadressile Tööriistad> Viited> Microsofti VBScripti regulaaravaldised.

Need on objekti RegExp omadused:

  • Muster - Muster, mida kavatsete stringiga sobitamiseks kasutada.
  • IgnoreCase - Kui see on tõene, siis sobitamine ignoreerib tähe- ja väiketähti.
  • Globaalne - Kui see on tõene, siis leitakse stringist kõik mustri vasted. Kui vale, leitakse ainult esimene vaste.
  • MultiLine - Kui see on tõene, toimub mustrite sobitamine reavahetes.

Need on RegExp objekti meetodid:

  • Test - Otsib stringist mustrit ja tagastab, kui vaste leitakse.
  • Asenda - Asendab mustri esinemised asendusstringiga.
  • Käivita - Tagastab mustri vasted stringile.

Mustri testimine stringi vastendamiseks

Testmeetodi abil saate kontrollida, kas muster vastab sisendstringi jada. Tulemus on tõene, kui vaste leitakse. Järgmine kood näitab teile, kuidas mustrit stringiga testida:

12345678910111213 AlamreguxTestingAPattern ()Hämarda string Üks stringinaDim regexOne kui objektMäära regexOne = Uus RegExpregexOne.Pattern = "f… .a"stringOne = "000111fjo88a8"Silumine. Prindige regexOne.Test (stringOne)End Sub

Tulemuseks on:

Mustri asendamine stringis

Asendusmeetodi abil saate asendada stringis sobiva mustri esimese eksemplari või stringi kõik sobiva mustri eksemplarid. Kui Global on seatud väärtusele False, asendatakse ainult esimene eksemplar. Järgmine kood näitab teile, kuidas stringi mustrit asendada:

1234567891011 AlamreguxReplacingAPattern ()Hämarda string Üks stringinaDim regexOne kui objektMäära regexOne = Uus RegExpregexOne.Pattern = "See on number"regexOne.Global = ValestringOne = "See on number 718901"Silumine. Printige regexOne.Replace (stringOne, "See on uus number")End Sub

Tulemuseks on:

Ainult ülaltoodud stringi numbriosa asendamiseks kasutage järgmist koodi:

1234567891011 AlamreguxReplacingAPattern ()Hämarda string Üks stringinaDim regexOne kui objektMäära regexOne = Uus RegExpregexOne.Pattern = "[^\ D]+"regexOne.Global = ValestringOne = "See on number 718901"Silumine. Prindige regexOne.Replace (stringOne, "777192")End Sub

Tulemuseks on:

Stringi teatud mustri iga eksemplari asendamiseks määrake globaalseks väärtuseks Tõene. Järgmine kood näitab teile, kuidas asendada stringi iga -A1289C- eksemplar:

1234567891011 AlamregulaarReplacingEveryInstanceOfAPattern ()Hämarda string Üks stringinaDim regexOne kui objektMäära regexOne = Uus RegExpregexOne.Pattern = "\ W \ A \ d+C \ W"regexOne.Global = TõsistringOne = "ABC-A1289C-ABC-A1289C-ABC"Silumine. Prindige regexOne.Replace (stringOne, "IJK")End Sub

Mustri sobitamine ja kuvamine stringina

Meetodi Execute abil saate sobitada stringi ühe või kõik mustri eksemplarid. Järgmine kood näitab teile, kuidas sobitada ja kuvada stringi kõik mustri eksemplarid:

123456789101112131415161718 AlamrežiimMatchingAndDisplayingAPattern ()Hämarda string Üks stringinaDim regexOne kui objektMäära regexOne = Uus RegExpregexOne.Pattern = "A.C"regexOne.Global = TõsiregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AJC"Määrake theMatches = regexOne.Execute (stringOne)Iga mängu kohta matšidesSilumine. Prindivaste. VäärtusEdasiEnd Sub

Tulemuseks on:

Oletame, et soovisime ülalolevast stringist sobitada ainult -ADC-. Järgmine kood näitab, kuidas stringi sobitada ja kuvada ainult -ADC:

123456789101112131415161718 AlamrežiimMatchingAndDisplayingAPattern ()Hämarda string Üks stringinaDim regexOne kui objektMäära regexOne = Uus RegExpregexOne.Pattern = "\-\ A.C \" "regexOne.Global = ValeregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AEC"Määrake theMatches = regexOne.Execute (stringOne)Iga mängu kohta matšidesSilumine. Prindivaste. VäärtusEdasiEnd Sub

Regexi õppimine võib võtta natuke aega, kuid see on äärmiselt võimas tööriist tekstistringide tuvastamiseks/manipuleerimiseks. Seda kasutatakse laialdaselt ka programmeerimiskeeltes.

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave