Lissa küsib:
Kas on võimalik numbrit (alati juhuslikku arvu) pärast sõna rebast muuta? Näide: rebane 23, karu 1, rebane 398, konn 12, rebane 15. Soovin muuta numbri samaks värvi rebane.
Microsoft Wordist leiame ja vormingu järgi asendame. See on suurepärane funktsioon vormindatud teksti kiireks leidmiseks ja isegi dokumendis kogu tekstivormingu asendamiseks.
Valige lindil Täpsem leid.
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_2.jpg.webp)
Sisestage leidmiseks tekst, seejärel klõpsake täpsemate valikute nägemiseks nuppu Veel ja klõpsake nuppu Vorminda.
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_3.jpg.webp)
Valige seadetes Font valik, seejärel saate seadistada tekstivärvi, mille soovite dokumendist leida. Dialoogiakna Otsi fondi sulgemiseks klõpsake nuppu OK.
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_4.jpg.webp)
Klõpsake nuppu Leia järgmine ja näete, et valitud on esimene värv, mida otsitakse teatud värviga.
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_5.jpg.webp)
Samuti saame metamärke kasutades teha keerukamaid otsinguid. Kuid Wordi omakeelne otsingumoodul ei lase meil otsida, kuidas Lissa küsis.
Seal saame RegExi mängu kutsuda!
VBSCripti regulaaravaldiste kogu
VBA ei paku regulaaravaldise tuge. Kuid Microsofti VBScript'i teek sisaldab võimsaid regulaaravaldise võimalusi. See teek on osa Internet Explorer 5.5 ja uuemast versioonist, seega on see saadaval kõikides arvutites, kus töötab Windows XP, Vista, 7, 8, 8.1 või 10.
Maci kasutajad
Kuna Internet Explorer pole Maci rakendus, pole seda teeki Macis olemas. Seetõttu ei tööta allpool olevad VBA näidised Macis.
Selle teegi kasutamiseks VBA-s lülituge VBE-le, valige menüüst VBE Projekt ja viited, seejärel kerige loendis allpool üksuse "Microsoft VBScript Regular Expressions 5.5" leidmiseks ja märkige see rakendusse lisamiseks.
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_6.jpg.webp)
Sisestage uus moodul ning kopeerige ja kleepige järgmine moodul sellesse moodulisse.
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
See protseduur võtab näidisteksti, leiab tootekoodid antud mustri järgi - mis algab tähega "rebane", ühe tühiku ja numbriga ning prindib sobivad koodid aknasse Kohe (vajutage VBE-s klahve Ctrl + G, kui see pole juba nähtav).
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_7.jpg.webp)
d+
mustris olev märgiklass määratleb ühe või mitu numbrimärki ja muster on põhimõtteliselt "rebase" eesliide, millele järgneb tühik, millele järgnevad numbrid.
Rohkem infot
Lisateavet märkide põgenemiste, tähemärkide klasside ja ankrute kohta leiate aadressilt Regulaaravaldise keel - kiirjuhend.
Kopeerige ja kleepige järgmine kood, et näha RegExi toimimist tühikute eemaldamiseks tootekoodidest.
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
See protseduur asendab näidisteksti sisu, eemaldades antud mustriga sobitatud tootekoodidest tühikud ja prindib tulemuse teksti kohe aknasse.
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_8.jpg.webp)
Pange tähele, et muster erineb veidi esimesest koodist. Selle mustri mõisted on suludesse lisatud ja asendusmeetodis kasutatakse vastavaid termineid järjestuses $ 1 ja $ 2. See protseduur ühendab need kaks mõistet lihtsalt tühikuteta.
Tagasi küsimuse juurde
Naaseme tagasi näidisteksti juurde, mida kasutasime selle artikli alguses.
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_5.jpg.webp)
Peame leidma "rebane", millele järgnevad numbrilised tähemärgid, ja muutma vastet, kasutades sobitatud tekstis jaotise "rebane" värvi.
Kuigi RegEx sobib antud mustriga väga hästi, ei saa see Wordi dokumendis teksti värvi asendada. Nii ühendame RegExi ja Wordi VBA meetodid järgmises protseduuris.
Siin on sammud:
- RegExiga leiate vasted.
- Otsige iga sobitatud teksti Wordi meetodi abil.
- Leidke leitud sõna esimese sõna värv.
- Leitud vahemiku värvi muutmine eelmise sammu värviga.
Lülitage VBE-le ja sisestage uus moodul. Veenduge, et projektile oleks lisatud VBScript Regular Expressions teek ning kopeerige ja kleepige järgmine kood sellesse uude moodulisse.
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
Käivitage kood ja siin on tulemus.
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_9.jpg.webp)
Laadige alla Wordi fail
Wordi faili allalaadimiseks toimige järgmiselt
RegEx Excelis?
Regex puudub Excelis täielikult. Kuid siiski saame Exceli VBA-s kasutada VBScript Regular Expressions.
Launch Excel, open a new workbook, and create the content as shown below.
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_10.jpg.webp)
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.
![](https://cdn.wiki-base.com/3412141/how_to_use_regex_in_microsoft_word_-_excel_tips_11.jpg.webp)
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