Какво е 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 в резултат на съобщенията.
