VBA - Regulāras izteiksmes
VBA - Regulāras izteiksmes
Šīs apmācības mērķis ir izskaidrot visus sarežģījumus, kas saistīti ar regulāru izteiksmju izmantošanu. Jūs uzzināsiet, kā pārvietoties pa stīgām, lai atrastu apakšvirsrakstus, izmantojot regulāras izteiksmes (ko parasti sauc par RegExp ).
Priekšnoteikumi
VBA redaktorā.- Atveriet izvēlni Rīki> Atsauces.
- Pārlūkojiet dažādas atsauces un pārbaudiet šādu opciju "Microsoft VBScript regulāra izteiksme 5.5".
Sintakse un deklarācija
Šajos piemēros vienīgie termini, kas būs nepieciešami, ir:Paziņojums
Ir pieejamas divas iespējas:Kā objekts
Dim reg kā Object Set reg = CreateObject ("vbscript.regexp")
VBScript_RegExp_55.regexp
Dim reg As VBScript_RegExp_55.regexp Iestatīt reg = Jauns VBScript_RegExp_55.regexp
Īpašības
Neatkarīgi no tā, kā jūs norādījāt RegExp, īpašībām būs tāda pati sintakse.Raksts
Šim modelim ir jāatbilst virsrakstam. Tas ļauj jums pārvietoties pa virkni.reg.Pattern = "IciLeMotif"
Pārbaude
Mēs pārbaudīsim virkni, ja tiek atrasts modelis, tas atgriež šādu Būla vērtību: True.reg.Test = "IciLeMotif"
String sākas ar A (lielajiem burtiem)
Šis modelis būtu:- virknes sākumā
- ir A
Šī raksta apzīmējums ir: ^ A
Funkcija Prem_Lettre_A (izteiksme kā virkne) kā Būla dimensija reg kā kā objekts Iestatīt reg = CreateObject ("vbscript.regexp") "Le Pattern est le motor que l'on recherche" déut de chaîne: ^ 'doit être: A reg.Pattern = "^ A" 's test renvoie un Boolean (parfait pour notre fonction Booléenne !!!) Prem_Lettre_A = reg.test (izteiksme) beigu funkcija
Lai izsauktu funkciju:
Sub Test_A () 'Nous allons chercher si un String sākas par "A" Majuscule MsgBox Prem_Lettre_A ("alors?") MsgBox Prem_Lettre_A ("Ahhh") MsgBox Prem_Lettre_A ("Pas mal non?") Beigas Sub
Strings sākas ar a vai A
Modeļa apzīmējums ir [aA]Sub Test_a_ou_A () 'Nous allons chercher si un String sākas par "au" A "MsgBox Prem_Lettre_a_ou_A (" alors? ") MsgBox Prem_Lettre_a_ou_A (" Ahhh ") MsgBox Prem_Lettre_a_ou_A (" Pas mal non? ") Beigas apakšfunkcija Prem_Lettre_a_ou_A ( izteiksme kā virkne) kā Būla dimensija reg kā objekts Iestatīt reg = CreateObject ("vbscript.regexp") 'ici la première lettre: ^' doit être: a ou A => [aA] reg.Pattern = "^ [aA]" Prem_Lettre_a_ou_A = reg.test (izteiksme) Beigu funkcija
Strings sākas ar lielo burtu
Šī raksta apzīmējums ir: [AZ]Sub Commence_par_Majuscule () MsgBox "alors? Commence par une majuscule:" & Prem_Lettre_Majuscule ("alors?") MsgBox "Ahhh sākt par une majuscule:" & Prem_Lettre_Majuscule ("Ahhh") MsgBox "Pas mal non? & Prem_Lettre_Majuscule ("Pas mal non?") Beigas apakšfunkcija Prem_Lettre_Majuscule (izteiksme kā virkne) Kā Būla dimensija Reg kā objekts Iestatīt reg = IzveidotObjektu ("vbscript.regexp") 'ici la première lettre: ^' doit être une lettre Majuscule: [AZ] reg.Pattern = "^ [AZ]" Prem_Lettre_Majuscule = reg.test (izteiksme) beigu funkcija
Stringi beidzas ar
Izmantojiet šādu apzīmējumu: $Sub Fini_Par () MsgBox "La frāze: Les RegExp c'est super! Se termine par super:" & Fin_De_Phrase ("Les RegExp c'est super!") MsgBox "La frāze: C'est super les RegExp! Se termine par super: "& Fin_De_Phrase (" C'est super les RegExp! ") Beigas apakšfunkcija Fin_De_Phrase (izteiksme kā virkne) kā Boolean Dim reg kā Object Set reg = CreateObject (" vbscript.regexp ") 'La fin de la chaine doit être : super! 'notation de fin de chaîne: $ reg.Pattern = "super! $" piezīme le $ se vieta à la fin ... Fin_De_Phrase = reg.test (izteiksme) Beigu funkcija
Stringā ir numurs
Šī raksta apzīmējums ir [0-9] . Ja vēlaties atrast numuru no 3 līdz 7: [3-7]Sub Contient_un_chiffre () MsgBox "aze1rty contient un chiffre:" & A_Un_Chiffre ("aze1rty") MsgBox "azerty contient un chiffre:" & A_Un_Chiffre ("azerty") Beigas apakšfunkcija A_Un_Chiffre (izteiksme kā virkne) Kā Boolean Dim reg kā objektu kopa reg = CreateObject ("vbscript.regexp") 'doit comporter un chiffre de 0 à 9 n'importe ou (début, milieu, fin de chaine ...) reg.Pattern = "[0-9]"' remarque [0 -9] s'écrit également: d 'reg.Pattern = "d" A_Un_Chiffre = reg.test (izteiksme) Beigu funkcija
Stringā ir 3 ciparu numurs
Mēs tagad "kvantitatīvi" novērtēsim mūsu RegExp. Lai atrastu trīs notikumus, mēs izmantosim cirtainos bikšturi {}.Sub Contient_Un_Nombre_A_trois_Chiffres () MsgBox "aze1rty contient 3 chiffres:" & Nb_A_Trois_Chiffre ( "aze1rty") MsgBox "a1ze2rty3 contient 3 chiffres:" & Nb_A_Trois_Chiffre ( "a1ze2rty3") MsgBox "azer123ty contient 3 chiffres:" & Nb_A_Trois_Chiffre ( "azer123ty") beigas Apakšfunkcija Nb_A_Trois_Chiffre (izteiksme kā virkne) kā Būla dimensija reg kā objekts Iestatīt reg = Izveidot objektu ("vbscript.regexp") 'doit comporter 3 chiffres de 0 à 9 qui se suivent' le nombre d'occurrence se piezīme {} reg.Pattern = "{{}}" 'équivalant de: reg.Pattern = "[0-9] {3}" Nb_A_Trois_Chiffre = reg.test (izteiksme) beigu funkcija
Stringā ir 3 atsevišķi numuri
Kods
Sub Contient_trois_Chiffres () MsgBox "aze1rty contient 3 chiffres séparés:" un Trois_Chiffre ("aze1rty") MsgBox "a1ze2rty3 contient 3 chiffres séparés: & Trois_Chiffre (" a1ze2rty3 ") MsgBox" azer123ty contient 3 chiffres séparés: & Trois_Chiffre ("azer123ty ") Beigas apakšfunkcija Trois_Chiffre (izteiksme kā virkne) Kā Būla dimensija Reg kā Objekts Iestatīt reg = Izveidot Objektu (" vbscript.regexp ") 'doit comporter 3 chiffres de 0 à 9 qui ne se suivent pas' s nombre d'occurrence {} 's punkts (.) indu nicené quel caractère sauf le saut de ligne' le + indique que le précède (ici le); + (d {1}) (.) + (d {1}) (.) + (d {1}) "Trois_Chiffre = reg.test (izteiksme) beigu funkcija
Variants
Sub Contient_trois_Chiffres_Variante () MsgBox "aze1rty contient 3 chiffres séparés:" & Trois_Chiffre_Simplifiee ( "aze1rty") MsgBox "a1ze2rty3 contient 3 chiffres séparés:" & Trois_Chiffre_Simplifiee ( "a1ze2rty3") MsgBox "azer123ty contient 3 chiffres séparés:" & Trois_Chiffre_Simplifiee ( "azer123ty ") Beigas apakšfunkcija Trois_Chiffre_Simplifiee (izteiksme kā virkne) Kā Būla dimensija reg kā kā objekts Iestatīt reg = Izveidot objektu (" vbscript.regexp ")" Comme le même motīvs: (.) + ({{}} Se répète trois fois: reg.Pattern = "(. + d {1}) {3}" Trois_Chiffre_Simplifiee = reg.test (izteiksme) Beigu funkcija
Piemērs lietošanai
Mūsu piemērā mērķis ir noteikt, vai virkne sastāv no šādas secības:- 1: virkne sākas ar vārdu "Vis"
- 2: seko atstarpe
- 3: seko 1 līdz 3 burti
- 4: seko atstarpe
- 5: seko burts M
- 6: seko 1 līdz 2 burti
- 7: seko defise
- 8: seko 1 līdz 3 burti
- 9: kam seko vārds "classe", ko ieskauj telpas un mazie burti
- 10: 1-2 burtu pēcpārbaude
- 11: seko punkts
- 12: seko burts
Ņemiet vērā, ka : Katrs raksta bloks ir iekļauts iekavās.
Apzīmējums:
- 1- => (^ Vis)
- 2- => ()
- 3- => ([a-zA-Z] {1, 3})
- 4- => () --- Piezīme: uz aurait pu l'insérer avec le M qui suit ... Mis pour l'exemple
- 5- => (M)
- 6- => ([a-zA-Z] {1, 2})
- 7- => (-)
- 8- => ([a-zA-Z] {1, 3})
- 9- => (sagrupēt)
- 10- => ([a-zA-Z] {1, 2})
- 11- => (\ t
- 12- => ([a-zA-Z] {1})
Tas mums dod šādu modeli
"(^ Vis) () ([a-zA-Z] {1, 3}) () (M) ([a-zA-Z] {1, 2}) (-) ([a-zA-Z ] {1, 3}) (salikt) ([a-zA-Z] {1, 2}) (.) ([A-zA-Z] {1}) "
Kods:
Sub Main () Ja VerifieMaChaine ("Vis xx Mxx-x classe xx.x") Tad MsgBox "labs" Else MsgBox "pas glop" Beigas Ja "manque l'espace avant le M: ja VerifieMaChaine (" Vis xxMxx-x klasifikācija xx.x ") Tad MsgBox" labs "Else MsgBox" pas glop "Beigas vai beigas apakšfunkcija VerifieMaChaine (izteiksme kā virkne) Kā Būla Dim reg Kā objektu iestatījums reg = CreateObject (" vbscript.regexp ")" Ir vienkāršāks piemērs, bet tas ir vispilnīgākais reg.Pattern = "(^ Vis) () ([a-zA-Z] {1, 3}) () (M) ([a-zA-Z] {1, 2} ) (-) ([a-zA-Z] {1, 3}) (salikt) ([a-zA-Z] {1, 2}) (.) ([a-zA-Z] {1}) "VerifieMaChaine = reg.test (izteiksme) Beigu funkcijas beigas