Перейти к содержимому

VBA Excel. Регулярные выражения

Регулярные выражения в VBA Excel. Объекты RegExp, Match, Matches Collection и их свойства. Символы и метасимволы. Создание объекта RegExp с ранней и поздней привязкой.

Регулярные выражения (по Википедии - формальный язык поиска и осуществления манипуляций с подстроками в тексте), необходимы для обработки текстов с помощью шаблонов, состоящих из символов и метасимволов, и представлены объектом RegExp.

В VBA Excel для работы с регулярными выражениями используется библиотека «Microsoft VBScript Regular Expression».

  1. Создание объекта RegExp
  2. Свойства и методы объекта RegExp
  3. Свойства объектов Match и Matches Collection
  4. Символы и метасимволы

Создание объекта RegExp

Ранняя привязка

Обычно рекомендуется использовать объекты с ранней привязкой, так как у них выше быстродействие, а также при написании и редактировании кода доступны подсказки  в виде листа свойств-методов, появляющегося автоматически или вызываемого, при необходимости, сочетанием клавиш Ctrl+Пробел.

Раннее связывание заключается в присвоении нового экземпляра объекта RegExp переменной, уже объявленной, как переменная определенного типа (в нашем случае, как RegExp).

Для осуществления ранней привязки необходимо подключить к проекту VBA ссылку на библиотеку «Microsoft VBScript Regular Expression», для чего в редакторе VBA выбираем Tools - References...

Меню Tools окна Project-VBAProject

В открывшемся окне «References» находим строку «Microsoft VBScript Regular Expression 5.5» (если у вас ее нет, то строку «Microsoft VBScript Regular Expression 1.0»), отмечаем ее галочкой и нажимаем «ОК».

Окно References-VBAProject

Готово - ссылка добавлена.

Создание объекта RegExp с ранней привязкой:

'Вариант 1
Dim myRegExp As RegExp
Set myRegExp = New RegExp
'-------------------------
'Вариант 2
Dim myRegExp As New RegExp

Поздняя привязка

Позднее связывание заключается в присвоении нового экземпляра объекта RegExp переменной, объявленной как Object, с помощью функции CreateObject.

Создание объекта RegExp с поздней привязкой:

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 Не пробел

В таблицу не включены редко используемые сочетания, ознакомиться с которыми можно в справочной системе MSDN. А примеры использования метасимволов в шаблонах очень хорошо представлены на этом ресурсе в разделе 4. Метасимволы.

Добавить комментарий