Поиск совпадения внутри скобок с использование регулярных выражений - VBA

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Есть текстовая строка: "Текст (Первый район, Второй район) продолжается текст без скобок. Новое предложение (Первый район, Второй район)". Необходимо с использованием регулярных выражений из библиотеки Microsoft VBScript Regular Expressions 5.5 исправить точку после маленькой буквы перед пробелом и большой буквой внутри скобок (если будет ошибка типа (Первый район. Второй район). Составил такой паттерн: (\(.+[а-я])(\.)( [А-Я].+\)) где первое выражение состоит из открывающей скобки, затем идёт какое-то количество любых символов и маленькая буква. Второе выражение - точка. Третье выражение - пробел, большая буква, какое-то количество любых символов и закрывающая скобка. Шаблон замены: $1,$3 Внутри скобок отрабатывает, но если в строке два или более выражений в скобках, находится соответствие между первой в строке открывающей скобкой и последней. В приведенной текстовой строке точка после слова "скобок" заменяется на запятую. Возможно ли ограничить поиск только внутри одной пары скобок?

Решение задачи: «Поиск совпадения внутри скобок с использование регулярных выражений»

textual
Листинг программы
Sub pr7()
    Dim x As Range, s$
    s = "Текст (Первый район. Второй район) продолжается текст без скобок. Новое предложение (Первый район, Второй район)"
    With CreateObject("vbscript.regexp")
        .Global = True
        .IgnoreCase = True
        .Pattern = "(\([а-яё ]+)(\.)(?=[а-яё ]+\))"
        If .test(s) Then MsgBox .Replace(s, .Execute(s)(0).submatches(0) & ",")
    End With
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы