Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Регулярные выражения (объекты, свойства, методы)

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

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

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

    Создание объекта 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 с ранней привязкой:

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

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

    Создание объекта 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. Метасимволы.

    Пример использования RegExp

    Пример использования регулярных выражений в VBA Excel для извлечения email-адресов из текстового файла.

    Для извлечения текстовой информации из файла в переменную используется функция GetText, которую вы можете скопировать из статьи Парсинг сайтов, html-страниц и файлов.

    В файл «Новый документ.txt» вставлен произвольный текст с четырьмя примерами email-адресов, которые необходимо извлечь.

    Код VBA Excel для извлечения email-адресов из текстового файла с помощью регулярных выражений:

    У меня результат работы кода выглядел так:


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    2 комментария для “VBA Excel. Регулярные выражения (объекты, свойства, методы)”

      1. А замена в тексте регулярными выражениями с примерами?

    Обсуждение закрыто.