Поиск совпадения внутри скобок с использование регулярных выражений - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д