Kā izmantot RegEx programmā Microsoft Word - Excel padomi

Lissa jautā:

Vai ir kāds veids, kā pēc vārda lapsa mainīt skaitli (vienmēr izlases skaitli)? Piemērs: lapsa 23, lācis 1, lapsa 398, varde 12, lapsa 15. Es gribu mainīt numuru uz tādu pašu vārda lapsa krāsu.

Mēs varam atrast un aizstāt pēc formāta programmā Microsoft Word. Šī ir lieliska iespēja ātri atrast formatēto tekstu un pat dokumentā aizstāt visu teksta formātu.

Lentē atlasiet Papildu atrašana.

Atrodiet un aizstājiet dialoglodziņu

Ievadiet meklējamo tekstu, pēc tam noklikšķiniet uz pogas Vairāk, lai skatītu papildu opcijas, un noklikšķiniet uz pogas Formatēt.

Papildu atrašanas opcijas

Iestatījumos atlasiet opciju Fonts, pēc tam varat iestatīt teksta krāsu, kuru vēlaties atrast dokumentā. Noklikšķiniet uz Labi, lai aizvērtu dialoglodziņu Atrast fontu.

Dialoglodziņā Atrast fontu atlasiet teksta krāsu.

Noklikšķiniet uz Atrast nākamo, un jūs redzēsiet, ka tiks atlasīts pirmais meklēšanas vaicājuma teksts noteiktā krāsā.

Atrodiet nākamo, lai atrastu pirmo parādīšanos.

Mēs varam veikt arī sarežģītākus meklējumus, izmantojot aizstājējzīmes. Tomēr Word vietējais meklēšanas modulis neļauj mums meklēt, kā Lissa jautāja.

Tur mēs varam izsaukt RegEx spēlē!

VBSCript regulāro izteiksmju bibliotēka

VBA netiek piegādāts ar regulāras izteiksmes atbalstu. Tomēr Microsoft VBScript bibliotēkā ir spēcīgas regulārās izteiksmes iespējas. Šī bibliotēka ir daļa no Internet Explorer 5.5 un jaunākas versijas, tāpēc tā ir pieejama visos datoros, kuros darbojas sistēma Windows XP, Vista, 7, 8, 8.1 vai 10.

Mac lietotāji

Tā kā Internet Explorer nav Mac lietojumprogramma, šī bibliotēka Mac nepastāv. Tādēļ zemāk redzamie VBA paraugi Mac nedarbojas.

Lai izmantotu šo bibliotēku VBA, pārslēdzieties uz VBE, izvēlnē VBE atlasiet Projekts un atsauces, pēc tam ritiniet uz leju sarakstā, lai atrastu vienumu "Microsoft VBScript Regular Expressions 5.5", un atzīmējiet to, lai iekļautu lietojumprogrammā.

VBScript regulāro izteiksmju bibliotēka

Ievietojiet jaunu moduli un kopējiet un ielīmējiet šajā modulī šo kodu.

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

Šī procedūra paņem teksta paraugu, atrod produkta kodus pēc norādītā modeļa - kas sākas ar "lapsa", vienu atstarpi un skaitli, un izdrukā atbilstošos kodus tūlītējā logā (nospiediet Ctrl + G VBE, ja tas nav jau redzams).

Atbilstošo produktu kodi, kas drukāti logā Tūlīt.

d+ rakstzīmju klase modelī nosaka vienu vai vairākas ciparu rakstzīmes, un raksts pamatā ir "lapsas" prefikss, kam seko atstarpe, kurai seko skaitļi.

Vairāk informācijas

Apmeklējiet regulārās izteiksmes valodu - ātro uzziņu, lai iegūtu papildinformāciju par rakstzīmju aizbēgšanu, rakstzīmju klasēm un enkuriem.

Nokopējiet un ielīmējiet šo kodu, lai redzētu darbību RegEx, lai noņemtu atstarpes no produktu kodiem.

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

Šī procedūra aizstāj teksta parauga paraugu, noņemot atstarpes no produktu kodiem, kas atbilst norādītajam modelim, un rezultātu tekstu izdrukā logā Tūlītēja.

Aizstāts teksts, kas drukāts logā Tūlīt.

Lūdzu, ņemiet vērā, ka modelis nedaudz atšķiras no pirmā koda. Šī modeļa vārdi ir pievienoti iekavām, un attiecīgie termini aizstājējmetodā tiek izmantoti kā $ 1 un $ 2 secībā. Šī procedūra vienkārši apvieno abus terminus bez atstarpēm.

Atpakaļ pie jautājuma

Atgriezīsimies pie teksta parauga, kuru izmantojām šī raksta sākumā.

Teksta paraugs

Mums jāatrod "lapsa", kam seko ciparu rakstzīmes, un jāmaina atbilstība, izmantojot atbilstošā teksta sadaļas "lapsa" krāsu.

Lai gan RegEx ir ļoti laba atbilstība dotajam paraugam, tā nevar aizstāt teksta krāsu Word dokumentā. Tātad mēs apvienosim RegEx un Word VBA metodes šajā procedūrā.

Tālāk ir norādītas darbības.

  1. Atrodiet spēles ar RegEx.
  2. Meklējiet katru atbilstošo tekstu, izmantojot Word Find metodi.
  3. Atrastajā diapazonā atrodiet pirmā vārda krāsu.
  4. Mainiet atrastā diapazona krāsu ar iepriekšējās darbības krāsu.

Pārslēdzieties uz VBE un ievietojiet jaunu moduli. Pārliecinieties, vai projektam ir pievienota VBScript regulāro izteiksmju bibliotēka, un nokopējiet un ielīmējiet šo kodu šajā jaunajā 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 

Palaidiet kodu, un šeit ir rezultāts.

Rezultāts

Lejupielādējiet Word failu

Lai lejupielādētu Word failu: how-to-use-regex-in-microsoft-word.docm

RegEx programmā Excel?

Regex trūkst pilnībā programmā Excel. Tomēr mēs joprojām varam izmantot VBScript regulārās izteiksmes programmā 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

Interesanti raksti...