Cum se utilizează RegEx în Microsoft Word - Sfaturi Excel

Lissa întreabă:

Există o modalitate de a schimba un număr (întotdeauna un număr aleatoriu) după cuvântul vulpe? Exemplu: vulpe 23, urs 1, vulpe 398, broască 12, vulpe 15. Vreau să schimb numărul cu aceeași culoare a cuvântului vulpe.

Putem găsi și înlocui prin format în Microsoft Word. Aceasta este o caracteristică excelentă pentru a găsi rapid textul formatat și chiar pentru a înlocui întregul format de text din document.

Selectați Găsire avansată pe panglică.

Găsiți și înlocuiți caseta de dialog

Introduceți textul de găsit, apoi faceți clic pe butonul Mai multe pentru a vedea opțiunile avansate și faceți clic pe butonul Format.

Opțiuni avansate de căutare

Selectați opțiunea Font din setări, apoi puteți configura culoarea textului pe care doriți să îl găsiți în document. Faceți clic pe OK pentru a închide fereastra de dialog Căutare font.

Selectați culoarea textului în dialogul Căutare font.

Faceți clic pe Găsiți în continuare și veți vedea prima apariție a textului căutat în anumite culori.

Găsiți Next pentru a găsi prima ocurență.

De asemenea, putem face căutări mai complicate folosind metacaractere. Cu toate acestea, modulul de căutare nativă Word nu ne permite să efectuăm o căutare la fel cum a întrebat Lissa.

Acolo putem apela RegEx în joc!

Biblioteca VBSCript Regular Expressions

VBA nu este livrat cu niciun suport de expresie regulat. Cu toate acestea, biblioteca VBScript Microsoft conține capacități puternice de exprimare regulată. Această bibliotecă face parte din Internet Explorer 5.5 și versiuni ulterioare, deci este disponibilă pe toate computerele care rulează Windows XP, Vista, 7, 8, 8.1 sau 10.

Utilizatori Mac

Deoarece Internet Explorer nu este o aplicație Mac, această bibliotecă nu există în Mac. Prin urmare, mostrele VBA de mai jos nu funcționează pe Mac.

Pentru a utiliza această bibliotecă în VBA, comutați la VBE, selectați Proiect și referințe în meniul VBE, apoi derulați lista în jos pentru a găsi elementul „Microsoft VBScript Regular Expressions 5.5” și bifați-l pentru a include în aplicație.

Biblioteca de expresii regulate VBScript

Introduceți un nou modul și copiați și lipiți următorul cod în acest modul.

Sub doRegexFind() Dim strSample As String Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match strSample = "First product code is fox 12, second one is fox 22, and third product is fox 45." Set objRegex = New RegExp With objRegex .Pattern = "fox d+" .Global = True .IgnoreCase = True Set matches = .Execute(strSample) For Each fnd In matches Debug.Print fnd Next fnd End With End Sub

Această procedură preia exemplul de text, găsește codurile de produs după modelul dat - care începe cu „vulpe”, un singur spațiu și un număr și tipărește codurile potrivite în fereastra Imediat (apăsați Ctrl + G în VBE dacă nu este vizibil deja).

Coduri de produse potrivite tipărite în fereastra Imediat.

d+ clasa de caractere din model definește unul sau mai multe caractere numerice, iar modelul este în principiu prefix „vulpe” urmat de un spațiu urmat de numere.

Mai multe informatii

Accesați Limbajul expresiei regulate - Referință rapidă pentru mai multe informații despre evadarea caracterelor, clasele de caractere și ancorele.

Copiați și lipiți următorul cod pentru a vedea RegEx în acțiune pentru a elimina spațiile din codurile de produs.

Sub doRegexFindReplace() Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match Dim strSample As String strSample = "First product code is fox 12, second one is fox 22, and third product is fox 45." Set objRegex = New RegExp With objRegex .Pattern = "(fox) (d+)" .Global = True .IgnoreCase = True strSample = .Replace(strSample, "$1$2") End With Debug.Print strSample End Sub

Această procedură înlocuiește conținutul textului eșantion, eliminând spațiile din codurile de produs potrivite cu modelul dat și imprimă textul rezultatului în fereastra Imediat.

Text înlocuit tipărit în fereastra Imediat.

Rețineți că modelul este ușor diferit de primul cod. Termenii din acest model sunt incluși cu paranteze, iar termenii corespunzători sunt folosiți în metoda Înlocuire ca 1 $ și 2 $ în ordine. Această procedură îmbină pur și simplu cei doi termeni fără spații.

Înapoi la întrebare

Să revenim la exemplul de text pe care l-am folosit la începutul acestui articol.

Text mostră

Trebuie să găsim „vulpe” urmată de caractere numerice și să schimbăm potrivirea folosind culoarea secțiunii „vulpe” din textul potrivit.

Deși RegEx se potrivește foarte bine cu modelul dat, nu poate înlocui culoarea textului din documentul Word. Deci vom combina metodele RegEx și Word VBA în următoarea procedură.

Iată pașii:

  1. Găsiți meciurile cu RegEx.
  2. Căutați fiecare text potrivit utilizând metoda Word Find.
  3. Găsiți culoarea primului cuvânt din intervalul găsit.
  4. Modificați culoarea intervalului găsit cu culoarea din pasul anterior.

Treceți la VBE și introduceți un nou modul. Asigurați-vă că biblioteca VBScript Regular Expressions este adăugată la proiect și copiați și lipiți următorul cod în acest nou modul.

Sub doRegexMagic() Dim str As String Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match Set objRegex = New RegExp str = "fox" With Selection .HomeKey wdStory .WholeStory End With With objRegex .Pattern = str & " d+" .Global = True .IgnoreCase = True Set matches = .Execute(Selection.Text) End With With Selection .HomeKey wdStory With .Find .ClearFormatting .Forward = True .Format = False .MatchCase = True For Each fnd In matches .Text = fnd .Execute With Selection .Font.Fill.ForeColor = .Range.Words(1).Font.TextColor .MoveRight wdCharacter End With Next fnd End With .HomeKey wdStory End With End Sub 

Rulați codul și iată rezultatul.

Rezultat

Descărcați fișierul Word

Pentru a descărca fișierul Word: how-to-use-regex-in-microsoft-word.docm

RegEx în Excel?

Regex lipsește complet din Excel. Cu toate acestea, putem folosi în continuare VBScript Regular Expressions în Excel VBA.

Launch Excel, open a new workbook, and create the content as shown below.

Sample data in Excel

Reference

This article has been inspired by Learn Excel 2010 - "Find & Replace Color of A Certain Word": Podcast #1714 published by Bill Jelen on May 21, 2013! So we wanted to use similar sample text as he used in the video. We just added numbers after the "fox".

Switch to VBE, and insert a new module. Make sure VBScript Regular Expressions library is added to the project just like you did in Word, and copy and paste the following code into this new module.

Sub doRegexMagicInExcel() Dim str As String Dim objRegex As RegExp Dim matches As MatchCollection Dim fnd As Match Dim rng As Range Dim cll As Range Set objRegex = New RegExp Set rng = Selection str = "fox" With objRegex .Pattern = "(" & str & ") (d+)" .Global = True .IgnoreCase = True For Each cll In rng.Cells Set matches = .Execute(cll.Value) For Each fnd In matches cll.Value = .Replace(cll.Value, "$1$2") Next fnd Next cll End With End Sub

Return to worksheet, and select the range with sample text. Run the macro, and see the result.

Result in Excel

This procedure loops through the cells in the selected range, replaces the text in the cells by removing the spaces from the product codes matched with the given RegEx pattern.

Download Excel File

To download the Excel file: how-to-use-regex-in-microsoft-excel.xlsm

Articole interesante...