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.

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.

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.

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

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ā.

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).

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.

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ā.

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.
- Atrodiet spēles ar RegEx.
- Meklējiet katru atbilstošo tekstu, izmantojot Word Find metodi.
- Atrastajā diapazonā atrodiet pirmā vārda krāsu.
- 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.

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.

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.

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