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.