VBA regulārā izteiksme

Satura rādītājs

Šī apmācība parādīs, kā lietot Regex VBA.

Kas ir Regex?

Regex apzīmē regulāru izteiksmi. Regulārā izteiksme ir raksts, kas sastāv no rakstzīmju virknes, ko varat izmantot, lai atrastu atbilstošu modeli citā virknē. Lai izmantotu Regex VBA, jums jāizmanto objekts RegExp.

Tādu modeli kā [A-C] var izmantot, lai secībā meklētu un saskaņotu lielos burtus no A līdz C. Regulārajiem tekstiem ir sava sintakse, un tos var veidot, izmantojot rakstzīmi vai rakstzīmju secību.

Atbilstošas ​​rakstzīmes

Nākamajā tabulā ir parādīta sintakse, kas ļaus jums izveidot regulārās izteiksmes modeļus.

Modeļa sintakse Apraksts Piemērs Atrastas atbilstības
. Atbilst jebkurai atsevišķai rakstzīmei, izņemot vbNewLine f.n ventilators, fon, f@n, fwn
[rakstzīmes] Atbilst jebkurai atsevišķai rakstzīmei starp iekavām [] [fn] Ventilatorā atbilstu tikai “f” vai “n”
[^rakstzīmes] Atbilst jebkurai atsevišķai rakstzīmei, kas nav starp iekavām [] [^fn] Tātad tas atbilstu “j” “fjn”
[sākums-beigas] Iekavās atbilst jebkurai rakstzīmei, kas ietilpst diapazonā [] [1-5] Atbilst “4” un “5” “45”
\ w Atbilst burtciparu rakstzīmēm un pasvītrojumam, bet ne atstarpēm \ w Atbilstu “c” no “, c”.
\ W Atbilst visām rakstzīmēm, kas nav burtciparu rakstzīmes, un pasvītrojumam \ W Atbilstu “@” “bb@bb”
\ s Atbilst jebkurai atstarpes zīmei, piemēram, atstarpēm un cilnēm \ s Atbilst ”” sadaļā “Tas ir”
\ S Atbilst jebkurai neraksturīgai atstarpes rakstzīmei \ S “T h” atbilst “T” un “h”
\ d Atbilst jebkuram decimāldaļskaitlim \ d Atbilstu “7” “a7h”
\ D Atbilst jebkuram ciparam, kas nav aiz komata \ D Atbilstu j “47j”
\ Izbēg no īpašām rakstzīmēm, kas ļauj tās meklēt \. Atbilstu “”. sadaļā “59.pQ”
\ t Tab \ t Atbilstu cilnes rakstzīmei
\ r Rakstatgriezes \ r Atbilst karietes atgriešanai (vbCr)
\ n vbNewLine (vbTab) \ n Atbilstu jaunai rindai

Kvantori

Varat izmantot skaitļus, lai norādītu, cik reižu modelim jāatbilst virknei.

Kvantifikators Apraksts Piemērs Atrastas atbilstības
* Atbilst nullei vai vairāk gadījumiem fn*a fna, fa, fnna, fnnna, fnfnnna
+ Atbilst vienam vai vairākiem gadījumiem fn+a fna, fnna, fnfnna
? Atbilst nullei vai vienai fn? a fa, fna
{n} Daudzas reizes atbilst “n” d \ W {4} Atbilstu “d…”. “d…. & 5hi”
{n,} Atbilst vismaz “n” reižu skaitam d \ W {4,} Atbilstu “d…. &” Sadaļā “d…. & 5hi”
{n, m} Atbilst n un m reižu skaitam d \ W {1,8} Atbilstu “d…. &&&&” sadaļā “d…. &&&& 5hi”

Grupēšana

Grupēšana vai tveršana ļauj izmantot modeli virknes daļas uztveršanai un izvilkšanai. Tātad tiek saskaņots ne tikai modelis, bet tiek uztverta virknei atbilstošā virknes daļa.

Raksts Apraksts Piemērs Atrastās un notvertās spēles
(izteiksme) Grupē un tver modeli iekavās (\ W {4}) Vai grupētu un uzņemtu “@@@@” no “1 @@@@ 1jlmba”

Kā lietot Regex VBA

Lai izmantotu Regex VBA, vispirms ir jāiestata atsauce VBE redaktorā. VBE redaktorā dodieties uz Rīki> Atsauces> Microsoft VBScript regulārās izteiksmes.

Šīs ir objekta RegExp īpašības:

  • Raksts - modelis, kuru izmantosit, lai saskaņotu ar virkni.
  • Ignorēt gadījumus - Ja ir taisnība, tad atbilstība ignorē burtu reģistru.
  • Globāli - Ja ir taisnība, tad tiek atrastas visas virknē esošā raksta atbilstības. Ja aplams, tiek atrasta tikai pirmā atbilstība.
  • MultiLine - Ja ir taisnība, modeļa atbilstība notiek rindu pārtraukumos.

Šīs ir objekta RegExp metodes:

  • Pārbaude - Meklē virknē esošu modeli un atgriež True, ja tiek atrasta atbilstība.
  • Aizvietot - Aizvieto modeļa gadījumus ar aizstāšanas virkni.
  • Izpildīt - Atgriež raksta atbilstības pret virkni.

Parauga pārbaude atbilstībai virknei

Varat izmantot pārbaudes metodi, lai pārbaudītu, vai raksts atbilst ievades virknes secībai. Rezultāts ir patiess, ja tiek atrasta atbilstība. Šis kods parādīs, kā pārbaudīt rakstu pret virkni:

12345678910111213 Apakšregulārais testsTestingAPattern ()Aptumšot virkni Viens kā virkneDim regexOne kā objektsIestatīt regexOne = New RegExpregexOne.Pattern = "f… .a"stringOne = "000111fjo88a8"Atkļūdot. Drukāt regexOne.Test (stringOne)Beigu apakš

Rezultāts ir šāds:

Raksta aizstāšana virknē

Varat izmantot metodi Aizstāt, lai virknē aizstātu atbilstoša raksta pirmo gadījumu vai visus atbilstošā raksta gadījumus virknē. Ja Global ir iestatīts uz False, tiek aizstāta tikai pirmā instance. Šis kods parādīs, kā virknē nomainīt modeli:

1234567891011 Apakšregulārais tekstsReplacingAPattern ()Aptumšot virkni Viens kā virkneDim regexOne kā objektsIestatīt regexOne = New RegExpregexOne.Pattern = "Šis ir skaitlis"regexOne.Global = NepareizistringOne = "Šis ir numurs 718901"Atkļūdot. Drukāt regexOne.Replace (stringOne, "Tas ir jaunais numurs")Beigu apakš

Rezultāts ir šāds:

Lai aizstātu tikai iepriekš izmantotās virknes numura daļu, izmantojiet šādu kodu:

1234567891011 Apakšregulārais tekstsReplacingAPattern ()Aptumšot virkni Viens kā virkneDim regexOne kā objektsIestatīt regexOne = New RegExpregexOne.Pattern = "[^\ D]+"regexOne.Global = NepareizistringOne = "Šis ir numurs 718901"Atkļūdot. Drukāt regexOne.Replace (stringOne, "777192")Beigu apakš

Rezultāts ir šāds:

Lai virknē aizstātu katru konkrēta parauga gadījumu, globālo vērtību iestatiet uz True. Šis kods parāda, kā virknē aizstāt katru -A1289C- gadījumu:

1234567891011 SubregexReplacingEveryInstanceOfAPattern ()Aptumšot virkni Viens kā virkneDim regexOne kā objektsIestatīt regexOne = New RegExpregexOne.Pattern = "\ W \ A \ d+C \ W"regexOne.Global = TaisnībastringOne = "ABC-A1289C-ABC-A1289C-ABC"Atkļūdot. Drukāt regexOne.Replace (stringOne, "IJK")Beigu apakš

Modeļa saskaņošana un parādīšana virknē

Varat izmantot izpildes metodi, lai virknē atrastu vienu vai visus modeļa gadījumus. Šis kods parāda, kā saskaņot un parādīt visus virknes modeļa gadījumus:

123456789101112131415161718 Apakšregulārā izteiksmeMatchingAndDisplayingAPattern ()Aptumšot virkni Viens kā virkneDim regexOne kā objektsIestatīt regexOne = New RegExpregexOne.Pattern = "A.C"regexOne.Global = TaisnībaregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AJC"Iestatiet theMatches = regexOne.Execute (stringOne)Par katru spēli mačosAtkļūdot. Drukāt atbilstību. VērtībaNākamaisBeigu apakš

Rezultāts ir šāds:

Pieņemsim, ka mēs tikai vēlējāmies saskaņot -ADC- no iepriekš minētās virknes. Šis kods parāda, kā saskaņot un parādīt tikai -ADC- no virknes:

123456789101112131415161718 Apakšregulārā izteiksmeMatchingAndDisplayingAPattern ()Aptumšot virkni Viens kā virkneDim regexOne kā objektsIestatīt regexOne = New RegExpregexOne.Pattern = "\-\ A.C \-"regexOne.Global = NepareiziregexOne.IgnoreCase = IgnoreCasestringOne = "ABC-A1289C-ADC-A1289C-AEC"Iestatiet theMatches = regexOne.Execute (stringOne)Par katru spēli mačosAtkļūdot. Drukāt atbilstību. VērtībaNākamaisBeigu apakš

Regulārā teksta apgūšana var aizņemt kādu laiku, taču tas ir ārkārtīgi spēcīgs rīks teksta virkņu identificēšanai/apstrādei. To plaši izmanto arī dažādās programmēšanas valodās.

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave