VBA Regex

Sisällysluettelo

Tämä opetusohjelma osoittaa, miten Regexiä käytetään VBA: ssa.

Mikä on Regex?

Regex tarkoittaa säännöllistä lauseketta. Säännöllinen lauseke on kuvio, joka koostuu merkkijonosta, jonka avulla voit löytää vastaavan kuvion toisesta merkkijonosta. Jotta voit käyttää Regexiä VBA: ssa, sinun on käytettävä RegExp -objektia.

Kuviota, kuten [A-C], voidaan käyttää etsimään ja vastaamaan isoja kirjaimia A-C järjestyksestä. Regulaarikuvioilla on oma syntaksinsa, ja ne voidaan rakentaa käyttämällä merkkiä tai merkkijonoa.

Vastaavat hahmot

Seuraavassa taulukossa on esitetty syntaksi, jonka avulla voit luoda Regex -malleja.

Kuvion syntaksi Kuvaus Esimerkki Löytyi osumia
. Vastaa mitä tahansa yksittäistä merkkiä paitsi vbNewLine f.n tuuletin, fon, f@n, fwn
[merkkiä] Vastaa mitä tahansa yksittäistä merkkiä hakasulkeiden välissä [] [fn] Sopisi vain "f" tai "n" tuulettimeen
[^merkkiä] Vastaa mitä tahansa yksittäistä merkkiä, joka ei ole hakasulkeiden välissä [] [^fn] Sopisi siis "j": ään "fjn"
[alku-loppu] Sopii kaikkiin hakasulkeisiin kuuluviin hahmoihin [] [1-5] Sopisi "4" ja "5" kohtaan "45"
\ w Vastaa aakkosnumeerisia merkkejä ja alaviivaa, mutta ei välilyöntiä \ w Sopisi "c" kohtaan ", c".
\ W Vastaa kaikkia muita kuin aakkosnumeerisia merkkejä ja alaviivaa \ W Sopisi "@" kohtaan "bb@bb"
\ s Vastaa mitä tahansa välilyöntiä, kuten välilyöntejä ja välilehtiä \ s Sopisi "" kohtaan "Tämä on"
\ S Sopii mihin tahansa ei-valkoiseen välilyöntiin \ S Vastaavat "T" ja "h" "T h"
\ d Vastaa mitä tahansa desimaalilukua \ d Olisi "7" "a7h"
\ D Vastaa mitä tahansa ei-desimaalilukua \ D Sopisi j: ään "47j"
\ Pakottaa erikoismerkit, joiden avulla voit etsiä niitä \. Sopisi "". kohdassa "59.pQ"
\ t Välilehti \ t Vastaisi välilehden merkkiä
\ r Vaunun paluu \ r Sopisi vaunun palautukseen (vbCr)
\ n vbNewLine (vbTab) \ n Sopisi uuteen riviin

Kvantit

Voit määrittää kvanttoreiden avulla kuinka monta kertaa haluat kuvion vastaavan merkkijonoa.

Kvantti Kuvaus Esimerkki Löytyi osumia
* Vastaa nollaa tai useampia esiintymiä fn*a fna, fa, fnna, fnnna, fnfnnna
+ Vastaa yhtä tai useampaa esiintymää fn+a fna, fnna, fnfnna
? Vastaa nollaa tai yhtä fn? a fa, fna
{n} Vastaa "n" monta kertaa d \ W {4} Sopisi "d …" "d…. & 5hi"
{n,} Vastaa vähintään ”n” kertaa d \ W {4,} Sopisi "d…. &" Kohtaan "d…. & 5hi"
{n, m} Ottelut n ja m välillä d \ W {1,8} Sopisi "d…. &&&&" kohtaan "d…. &&&& 5hi"

Ryhmittely

Ryhmittelyn tai sieppaamisen avulla voit käyttää kaaviota jonon osan kaappaamiseen ja poimimiseen. Joten kuvio ei ole vain sovitettu, vaan kuvioa vastaava merkkijonon osa kaapataan.

Kuvio Kuvaus Esimerkki Ottelut löydetty ja kaapattu
(ilmaisu) Ryhmittelee ja kaappaa mallin suluissa (\ W {4}) Ryhmittyy ja kaappaa "@@@@" osoitteesta "1 @@@@ 1jlmba"

Regexin käyttö VBA: ssa

Jotta voit käyttää Regexiä VBA: ssa, sinun on ensin määritettävä viite VBE -editorissa. Siirry VBE -editorissa osoitteeseen Työkalut> Viitteet> Microsoft VBScript Regular Expressions.

Nämä ovat RegExp -objektin ominaisuudet:

  • Kuvio - Kuvio, jota aiot käyttää merkkijonoa vastatessa.
  • IgnoreCase - Jos tosi, täsmäys ei huomioi kirjainkokoa.
  • Maailmanlaajuinen - Jos tosi, kaikki merkkijonon kuvion osumat löytyvät. Jos väärä, vain ensimmäinen osuma löytyy.
  • MultiLine - Jos tosi, kuvioiden täsmäytys tapahtuu rivinvaihtojen yli.

Nämä ovat RegExp -objektin menetelmät:

  • Testata - Etsii kuvion merkkijonosta ja palauttaa True, jos osuma löytyy.
  • Korvata - Korvaa kuvion esiintymät korvaavalla merkkijonolla.
  • Suorittaa - Palauttaa kuvion ottelut merkkijonoa vastaan.

Kuvion testaaminen merkkijonoa vastaan

Voit testimenetelmän avulla tarkistaa, vastaako kuvio syöttöjonon järjestystä. Tulos on tosi, jos osuma löytyy. Seuraava koodi näyttää kuinka testata kuvio merkkijonoa vastaan:

12345678910111213 AliregexTestingAPattern ()Himmennä merkkijono Yksi merkkijononaDim regexOne objektinaAseta regexOne = Uusi säännöllinen lausekeregexOne.Pattern = "f… .a"stringOne = "000111fjo88a8"Debug.Print regexOne.Test (stringOne)End Sub

Tulos on:

Kuvion vaihtaminen merkkijonossa

Voit korvata korvaavan menetelmän avulla korvata merkkijonon vastaavan kuvion ensimmäisen esiintymän tai kaikki merkkijonon vastaavan kuvion esiintymät. Jos Global -asetukseksi on määritetty False, vain ensimmäinen esiintymä korvataan. Seuraava koodi näyttää kuinka korvataan kuvio merkkijonossa:

1234567891011 AlalauseReplacingAPattern ()Himmennä merkkijono Yksi merkkijononaDim regexOne objektinaAseta regexOne = Uusi säännöllinen lausekeregexOne.Pattern = "Tämä on numero"regexOne.Global = VäärästringOne = "Tämä on numero 718901"Debug.Print regexOne.Replace (stringOne, "Se on uusi numero")End Sub

Tulos on:

Jos haluat korvata vain yllä olevan merkkijonon numero -osan, käytä seuraavaa koodia:

1234567891011 AlalauseReplacingAPattern ()Himmennä merkkijono Yksi merkkijononaDim regexOne objektinaAseta regexOne = Uusi säännöllinen lausekeregexOne.Pattern = "[^\ D]+"regexOne.Global = VäärästringOne = "Tämä on numero 718901"Debug.Print regexOne.Replace (stringOne, "777192")End Sub

Tulos on:

Jos haluat korvata jonon tietyn kuvion jokaisen esiintymän, aseta yleinen arvo True. Seuraava koodi näyttää, kuinka voit korvata merkkijonon kaikki -A1289C- esiintymät:

1234567891011 AlalauseReplacingEveryInstanceOfAPattern ()Himmennä merkkijono Yksi merkkijononaDim regexOne objektinaAseta regexOne = Uusi säännöllinen lausekeregexOne.Pattern = "\ W \ A \ d+C \ W"regexOne.Global = TottastringOne = "ABC-A1289C-ABC-A1289C-ABC"Debug.Print regexOne.Replace (stringOne, "IJK")End Sub

Kuvion sovittaminen ja näyttäminen merkkijonossa

Voit käyttää Execute -menetelmää vastaamaan yhtä tai kaikkia kuvion esiintymiä merkkijonossa. Seuraava koodi näyttää, miten kaikki merkkijonon kuvion esiintymät voidaan yhdistää ja näyttää:

123456789101112131415161718 Osalause MatchingAndDisplayingAPattern ()Himmennä merkkijono Yksi merkkijononaDim regexOne objektinaAseta regexOne = Uusi säännöllinen lausekeregexOne.Pattern = "A.C"regexOne.Global = TottaregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AJC"Aseta theMatches = regexOne.Execute (stringOne)Jokaisesta ottelusta otteluissaDebug.Print Match.ValueSeuraavaEnd Sub

Tulos on:

Oletetaan, että halusimme vain yhdistää -ADC- yllä olevasta merkkijonosta. Seuraavassa koodissa näytetään, miten vain -ADC- voidaan yhdistää ja näyttää merkkijonosta:

123456789101112131415161718 Osalause MatchingAndDisplayingAPattern ()Himmennä merkkijono Yksi merkkijononaDim regexOne objektinaAseta regexOne = Uusi säännöllinen lausekeregexOne.Pattern = "\-\ A.C \-"regexOne.Global = VääräregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AEC"Aseta theMatches = regexOne.Execute (stringOne)Jokaisesta ottelusta otteluissaDebug.Print Match.ValueSeuraavaEnd Sub

Regexin oppiminen voi viedä jonkin aikaa, mutta se on erittäin tehokas työkalu tekstijonojen tunnistamiseen/käsittelyyn. Sitä käytetään myös laajasti eri ohjelmointikielillä.

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave