Использование регулярных выражений

Visual Basic for Applications:
Использование регулярных выражений

Как использовать:

Чтобы использовать регулярные выражения в VBA, сначала нужно включить библиотеку Microsoft VBScript Regular Expressions. В редакторе VBA перейдите в Инструменты -> Ссылки, затем отметьте Microsoft VBScript Regular Expressions 5.5.

Вот простой пример для поиска существования шаблона в строке:

Sub FindPattern()
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")

    With regex
        .Global = True
        .IgnoreCase = True
        .Pattern = "\bis\b"  ' Ищет слово "is"
    End With
    
    Dim testString As String
    testString = "This is a test string."
    
    If regex.Test(testString) Then
        MsgBox "Шаблон найден."
    Else
        MsgBox "Шаблон не найден."
    End If
End Sub

Чтобы заменить шаблон в строке:

Sub ReplacePattern()
    Dim regex As Object, replacedString As String
    Set regex = CreateObject("VBScript.RegExp")
    
    With regex
        .Global = True
        .IgnoreCase = False
        .Pattern = "\s"  ' Соответствует любому пробельному символу
    End With
    
    replacedString = regex.Replace("This is a test string.", "_")
    MsgBox replacedString  ' Выводит: "This_is_a_test_string."
End Sub

Погружение в детали

Включение регулярных выражений в языки программирования часто восходит к инструментам Unix 1970-х годов. VBA интегрировал regex через библиотеку VBScript Regular Expressions, подчеркивая его значимость в задачах обработки текста даже в приложениях, традиционно не ассоциируемых с интенсивной манипуляцией текстом, таких как Excel или Access.

Несмотря на их мощь, regex в VBA иногда может быть менее интуитивно понятным или производительным по сравнению с более современными реализациями в языках, таких как Python или JavaScript. Например, модуль re в Python предлагает обширную поддержку именованных групп и более сложных возможностей сопоставления с образцом, обеспечивая более чистый и потенциально более читаемый подход. Однако, работая в экосистеме VBA, регулярные выражения остаются бесценным инструментом для задач, требующих сопоставления шаблонов или манипуляции текстом. Потеря эффективности часто незначительна на фоне удобства и возможностей, которые regex предоставляет при работе со строками в офисных приложениях.