Visual Basic for Applications:
Säännöllisten lausekkeiden käyttö
Kuinka:
Jotta voisit käyttää säännöllisiä lausekkeita VBAssa, sinun täytyy ensin ottaa käyttöön Microsoft VBScript Regular Expressions -kirjasto. VBA-editorissa, mene Työkalut
-> Viitteet
, ja sitten valitse Microsoft VBScript Regular Expressions 5.5
.
Tässä on perusesimerkki löytääksesi, esiintyykö kuvio merkkijonossa:
Sub FindPattern()
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
With regex
.Global = True
.IgnoreCase = True
.Pattern = "\bis\b" ' Etsii sanaa "is"
End With
Dim testString As String
testString = "This is a test string."
If regex.Test(testString) Then
MsgBox "Kuvio löytyi."
Else
MsgBox "Kuviota ei löytynyt."
End If
End Sub
Kuvion korvaamiseksi merkkijonossa:
Sub ReplacePattern()
Dim regex As Object, replacedString As String
Set regex = CreateObject("VBScript.RegExp")
With regex
.Global = True
.IgnoreCase = False
.Pattern = "\s" ' Vastaa mitä tahansa välilyöntimerkkiä
End With
replacedString = regex.Replace("This is a test string.", "_")
MsgBox replacedString ' Tulostaa: "This_is_a_test_string."
End Sub
Syvä sukellus
Säännöllisten lausekkeiden sisällyttäminen ohjelmointikieliin juontaa usein juurensa 1970-luvun Unix-työkaluihin. VBA integroi regexin VBScript Regular Expressions -kirjaston kautta, mikä korostaa sen merkitystä tekstinkäsittelytehtävissä jopa sovelluksissa, joita ei yleisesti yhdistetä raskaaseen tekstinkäsittelyyn kuten Excel tai Access.
Vaikka niiden tehokkuus on suuri, regexit VBA:ssa voivat toisinaan olla vähemmän intuitiivisia tai suorituskykyisiä verrattuna modernimpiin toteutuksiin kielissä kuten Python tai JavaScript. Esimerkiksi Pythonin re
moduuli tarjoaa laajat tukitoiminnot nimetyille ryhmille ja monimutkaisemmille kuvionvastineominaisuuksille, tarjoten puhtaamman ja mahdollisesti luettavamman lähestymistavan. Kuitenkin työskennellessä VBA-ekosysteemissä, säännölliset lausekkeet pysyvät arvokkaana työkaluna tehtävissä, jotka vaativat kuvion vastaamista tai tekstinkäsittelyä. Tehokkuuden kompromissi on usein merkityksetön ottaen huomioon mukavuuden ja kyvykkyydet, joita regex tarjoaa käsiteltäessä merkkijonoja Office-sovelluksissa.