Регулярные выражения в VBA Excel. Объекты RegExp, Match, Matches Collection и их свойства. Символы и метасимволы. Создание объекта RegExp с ранней, поздней привязкой и его методы.
В VBA Excel для работы с регулярными выражениями используется библиотека «Microsoft VBScript Regular Expression».
Создание объекта RegExp
Ранняя привязка
Обычно рекомендуется использовать объекты с ранней привязкой, так как у них выше быстродействие, а также при написании и редактировании кода доступны подсказки в виде листа свойств-методов, появляющегося автоматически или вызываемого, при необходимости, сочетанием клавиш Ctrl+Пробел.
Раннее связывание заключается в присвоении нового экземпляра объекта RegExp переменной, уже объявленной, как переменная определенного типа (в нашем случае, как RegExp).
Для осуществления ранней привязки необходимо подключить к проекту VBA ссылку на библиотеку «Microsoft VBScript Regular Expression», для чего в редакторе VBA выбираем Tools – References…
В открывшемся окне «References» находим строку «Microsoft VBScript Regular Expression 5.5» (если у вас ее нет, то строку «Microsoft VBScript Regular Expression 1.0»), отмечаем ее галочкой и нажимаем «ОК».
Готово – ссылка добавлена.
Создание объекта RegExp с ранней привязкой:
1 2 3 4 5 6 |
'Вариант 1 Dim myRegExp As RegExp Set myRegExp = New RegExp '------------------------- 'Вариант 2 Dim myRegExp As New RegExp |
Поздняя привязка
Позднее связывание заключается в присвоении нового экземпляра объекта RegExp переменной, объявленной как Object, с помощью функции CreateObject.
Создание объекта RegExp с поздней привязкой:
1 2 |
Dim myRegExp As Object Set myRegExp = CreateObject("VBScript.RegExp") |
Свойства и методы объекта RegExp
Свойства объекта RegExp
Свойство | Описание | Значение по умолчанию |
---|---|---|
Global | Определяет продолжительность поиска: False – до первого совпадения True – по всему тексту |
False |
IgnoreCase | Определяет чувствительность к регистру символов: False – учитывать регистр True – не учитывать регистр |
False |
Multiline | Определяет структуру объекта: False – однострочный True – многострочный |
False |
Pattern | Строка, используемая как шаблон | Пустая строка |
Свойства объекта RegExp доступны для чтения и записи.
Методы объекта RegExp
Метод | Синтаксис | Описание |
---|---|---|
Execute | Execute(myStr) myStr – строка для поиска |
Возвращает коллекцию найденных по шаблону подстрок в виде агрегатного объекта |
Replace | Replace(myStr,myRep) myStr – строка для поиска myRep – строка для замены |
Возвращает строку, в которой найденные по шаблону вхождения в исходной строке заменены на указанную подстроку. |
Test | Test(myText) myText – строка для проверки |
Возвращает булево значение как результат проверки соответствия строки шаблону |
Свойства объектов Match и Matches Collection
Метод Execute объекта RegExp возвращает агрегатный объект Matches Collection, который содержит коллекцию объектов Match, представляющих все совпадения, найденные механизмом регулярных выражений, в том порядке, в котором они присутствуют в исходной строке. Если совпадений нет, метод возвращает объект Matches Collection без членов.
Свойства объекта Matches Collection
Свойство | Описание |
---|---|
Count | Количество объектов Match, содержащихся в объекте Matches Collection |
Item | Индекс члена коллекции от нуля до значения свойства Count минус 1 |
Свойства объекта Matches Collection доступны только для чтения.
Свойства объекта Match
Свойство | Описание |
---|---|
FirstIndex | Позиция в исходной строке, где произошло совпадение, причем первая позиция в строке равна нулю |
Length | Длина совпавшей подстроки |
Value | Найденная подстрока (является свойством по умолчанию) |
Свойства объекта Match доступны только для чтения.
Символы и метасимволы
Все знаки, используемые для составления шаблонов, обычно делят на символы и метасимволы. Символы – это знаки, которые в шаблонах обозначают сами себя, а метасимволы (спецсимволы) – знаки, имеющие другое значение. Метасимволы могут использоваться как отдельно, так и в сочетании с другими символами и спецсимволами.
Таблица основных метасимволов и их сочетаний с другими символами
Метасимвол (сочетание символов) |
Значение |
---|---|
\ | После этого знака метасимвол обозначает сам себя, а некоторые символы приобретают другое значение |
^ | Начало строки |
$ | Конец строки |
? | Ни одного или один любой символ |
* | Ни одного или несколько любых символов |
+ | Один или несколько любых символов |
. | Любой символ, кроме знака “новая строка” |
– | Определяет интервал символов |
| | Знак “или” |
{n} | Точное количество символов, стоящих перед {n} |
{n,m} | Количество от n до m символов, стоящих перед {n,m} |
[abc] | Любой из указанных символов |
[^abc] | Любой из неуказанных символов |
[a-z] | Любой символ из диапазона |
[^a-z] | Любой символ, не входящий в диапазон |
\b | Конец слова |
\B | Не конец слова |
\d | Цифра |
\D | Не цифра |
\w | Любая буква, цифра или знак подчеркивания |
\W | Не буква, не цифра и не знак подчеркивания |
\s | Пробел |
\S | Не пробел |
В таблицу не включены редко используемые сочетания, ознакомиться с которыми можно в справочной системе разработчика. А примеры использования метасимволов в шаблонах очень хорошо представлены на этом ресурсе в разделе 4. Метасимволы.