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 

Lejupielādēt

Šajā pamācībā aprakstītie kodi ir uzskaitīti šajā darbgrāmatā: //cjoint.com/14au/DHgoqY7wwIw.htm
Iepriekšējais Raksts Nākamais Raksts

Top Padomi