Како се користи РегЕк у програму Мицрософт Ворд - Екцел савети

Лисса пита:

Постоји ли начин да промените број (увек случајан број) после речи лисица? Пример: лисица 23, медвед 1, лисица 398, жаба 12, лисица 15. Желим да променим број у исту боју речи лисица.

Можемо да пронађемо и заменимо по формату у програму Мицрософт Ворд. Ово је одлична карактеристика за брзо проналажење форматираног текста, па чак и замену целокупног формата текста у документу.

На траци изаберите Напредно проналажење.

Пронађи и замени дијалог

Унесите текст да бисте га пронашли, а затим кликните дугме Још да бисте видели напредне опције и кликните дугме Обликовање.

Напредне опције проналажења

Изаберите опцију Фонт у подешавањима, а затим можете подесити боју текста коју желите да пронађете у документу. Кликните на дугме У реду да бисте затворили дијалошки оквир Пронађи фонт.

Изаберите боју текста у дијалогу Пронађи фонт.

Кликните Пронађи даље и видећете да ће бити изабрано прво појављивање текста који се претражује у одређеној боји.

Финд Нект да бисте пронашли прву појаву.

Такође можемо да извршимо сложеније претраге користећи џокер знакове. Међутим, Вордов изворни модул за претрагу не дозвољава нам да претражимо како је Лисса тражила.

Ту можемо РегЕк позвати у игру!

ВБСЦрипт библиотека регуларних израза

ВБА се не испоручује са подршком за редовне изразе. Међутим, Мицрософт ВБСцрипт библиотека садржи моћне могућности регуларног израза. Ова библиотека је део Интернет Екплорер-а 5.5 и новијих, па је доступна на свим рачунарима који раде под оперативним системом Виндовс КСП, Виста, 7, 8, 8.1 или 10.

Мац корисници

Будући да Интернет Екплорер није Мац апликација, ова библиотека не постоји на Мац-у. Према томе, доњи узорци ВБА не раде на Мац-у.

Да бисте користили ову библиотеку у ВБА, пребаците се на ВБЕ, изаберите Пројецт анд Референце у менију ВБЕ, а затим се померите према доле да бисте пронашли ставку „Мицрософт ВБСцрипт Регулар Екпрессионс 5.5“ и означите је да бисте је укључили у апликацију.

ВБСцрипт библиотека регуларних израза

Уметните нови модул и копирајте и налепите следећи код у овај модул.

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

Овај поступак узима узорак текста, проналази кодове производа према датом узорку - који започиње са „лисица“, појединачним размаком и бројем, и исписује одговарајуће кодове у непосредном прозору (притисните Цтрл + Г у ВБЕ ако није већ видљиво).

Шифре производа које се подударају одштампане су у прозору Одмах.

d+ класа знакова у обрасцу дефинише један или више нумеричких знакова, а узорак је у основи префикс „лисица“ праћен размаком праћеним бројевима.

Више информација

Посетите Језик редовног израза - брзи приручник за више информација о пребегавању знакова, класама знакова и сидрима.

Копирајте и налепите следећи код да бисте видели РегЕк у акцији уклањања размака из кодова производа.

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

Овај поступак замењује узорак текстуалног садржаја уклањањем размака из кодова производа који се подударају са датим узорком и исписује резултат текста у прозору Непосредно.

Замењени текст одштампан у прозору Одмах.

Имајте на уму да се образац мало разликује од првог кода. Изрази у овом обрасцу приложени су заградама, а одговарајући појмови се користе у методи Замени као $ 1 и $ 2 редом. Овај поступак једноставно спаја два појма без размака.

Повратак на питање

Вратимо се примерку текста који смо користили на почетку овог чланка.

Пример текста

Морамо да пронађемо „лисицу“ праћену нумеричким знаковима и променимо подударање употребом боје одељка „лисица“ у одговарајућем тексту.

Иако се РегЕк врло добро подудара према датом узорку, не може да замени боју текста у Ворд документу. Дакле, комбиноваћемо РегЕк и Ворд ВБА методе у следећем поступку.

Ево корака:

  1. Пронађите подударања са РегЕк-ом.
  2. Претражите сваки подударни текст коришћењем методе Ворд Финд.
  3. Пронађите боју прве речи у пронађеном опсегу.
  4. Промените боју пронађеног опсега бојом у претходном кораку.

Пребаците се на ВБЕ и убаците нови модул. Обавезно додајте ВБСцрипт библиотеку регуларних израза у пројекат и копирајте и залепите следећи код у овај нови модул.

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 

Покрените код и ево резултата.

Резултат

Преузмите Ворд датотеку

Да бисте преузели Ворд датотеку: хов-то-усе-регек-ин-мицрософт-ворд.доцм

РегЕк у програму Екцел?

Регек у потпуности недостаје у програму Екцел. Међутим, и даље можемо да користимо регуларне изразе ВБСцрипт у програму Екцел ВБА.

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

Занимљиви Чланци...