VBA RegEx - Как да използвам регулярния израз в VBA Excel? (Примери)

Съдържание

Какво е RegEx в Excel VBA?

RegEx означава „ Редовен израз “ във VBA Excel и представлява поредица от символи, която дефинира модела на търсене за намиране на определен модел от символи в низ от стойности. С проста дума, „можем да създадем шаблон на регулярен израз и да го използваме, за да търсим низа на този модел.“

VBA RegEx е обектен модел. Знам, че е смущаващо, като разгледам обяснението, но работата е там, че естеството на обекта. Едно нещо, което трябва да запомните тук, е, че VBA RegEx (регулярен израз) е обект на текстова функция като другите ни текстови функции, „НАЛЯВО, НАДЯСНО, СРЕДНО“.

Как да активирам RegEx в Excel VBA?

Както казах на VBA, RegEx е обектен модел във VBA, точно като нашия външен софтуер като „MS Word“ и „MS PowerPoint“. По същия начин RegEx е и компонентен обектен модел (COM), на който трябва да се позоваваме в редактора на VBA. За да активирате RegEx, следвайте стъпките по-долу.

Стъпка 1: Отидете в Visual Basic Editor (Alt + F11)

Стъпка 2: Отидете на Инструменти и справки.

Стъпка 3: Сега ще видите препратки към проекта VBA. Превъртете надолу и изберете „Microsoft VBScript Regular Expression 5.5.“

Стъпка 4: Сега кликнете върху, OK. Вече можем да получим достъп до този обект RegEx във VBA кодиране.

Пример - Сега ще ви покажа един прост пример. Да приемем, че имате думите „Продажби 2019, Продажби 2018 и Продажби 2017“. Ако дефинирате модела като (0 - 7), той съвпада с всички числа между 0 и 7, така че нашите съвпадения ще бъдат 201, 201 и 2017 във всеки низ.

VBA RegEx модел

Моделът на функцията VBA RegEx изглежда смущаващ и отнема известно време, за да разбере модела. Тук можем да видим два вида последователност от символи, единият е „Буквални символи“, а другият е „Метасимволи“.

  • Буквалните символи търсят точното съвпадение на предоставения низ. Например буквалната символна последователност „EFG“ просто търси всички съвпадения на „EFG“ в предоставения текст.
  • Метасимволите не са нищо друго освен комбинация от символи с точно значение в шаблона RegEx. Това е напълно различно от буквалните знаци. Това е огромна тема за покриване. По-долу са дадени някои от важните синтаксиси.
Синтаксис Описание Пример Примерно съвпадение
. Той съответства на всеки един знак от входния низ. пт Домашен любимец. Пот, пут, модел
() Той съвпада с всеки един знак между скобата на входния низ. (pt) Той съответства или на p, или на t
(^) Той съвпада с всеки отделен символ, не между скобата на входния низ. (pt) Не отговаря нито на p, нито на t
(Първи последен) Той съответства на всеки символ между диапазона, предоставен в скобата. (0-9) Съвпада с всяка цифра от 0 до 9
(аз) Съвпада с всеки малък регистър от a до z
(AZ) Съвпада с всеки главен регистър от A до Z
с Съвпада с всеки пробел. - Съвпада с интервал, нов ред или табулатор
С Той съответства на всеки символ, който не е с бяло пространство - Съответстващите знаци не са интервал, не е нов ред или не е символ на табулатора
д Съвпада с всеки едноцифрен знак. SE 5 VG 6 Мачове 5 и 6
Д Той съответства на всеки един нецифрен знак SE 5 VG 6 Съвпада с SEVG

Свойства и методи на RegEx обект

Както всички наши обектни модели, RegEx също има свои собствени свойства и методи. Сега ще видим един по един в детайли.

Свойства на VBA Regex Object

  • Шаблон: Използва се за съвпадение на предоставения низ.
  • Игнориране на регистъра : Това е за игнориране на главни и малки букви.
  • Глобално: Ако искате да намерите всички съвпадения в шаблона, тогава TRUE е аргументът, иначе първото съвпадение ще бъде намерено.
  • Многоредов: Ако искате да намерите нови прекъсвания на редове, можете да използвате това.

Методи на RegEx обект

  • Тест: Това е, за да се провери дали моделът може да бъде намерен в предоставения низ. Това ще върне TRUE, ако е намерено, или FALSE.
  • Изпълнение: Това ще върне всички съвпадения на шаблона срещу низа за намиране.
  • Замяна: Това ще замени низа за търсене с новия низ.

Пример за RegEx във VBA Excel

Сега разгледайте примерния код на VBA по-долу.

Код:

Sub RegEx_Example () Dim RegEx като обект, MyString As String Set RegEx = CreateObject ("VBScript.RegExp") С RegEx .Pattern = "(0-9) +" End With MyString = "Дата на раждане година е 1985" MsgBox RegEx .Test (MyString) MyString = "Дата на раждане е ???" MsgBox RegEx.Test (MyString) End Sub

редовен

В горния код сме задали шаблона за търсене на числото от 0 до 9, както следва.

С RegEx .Pattern = "(0-9) +" Край с

Тогава променливата MyString = „Дата на раждане е 1985 г.“, тя съдържа стойностите от 0 до 9, така че нашето поле за съобщение ще върне TRUE.

MyString = „Дата на раждане е ???“ няма цифри от 0 до 9, така че ще върне FALSE в резултат на съобщенията.

Интересни статии...