Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] Заменить по регулярному выражению регулярное выражение

Ответить
Настройки темы
VBA - [решено] Заменить по регулярному выражению регулярное выражение

Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


В общем надо в элементах двумерного массива удалить все что располагается между /*/. Это надо делать регуляркой, тк содержимое неизвестно и располагается в любом месте строки, а то и не раз.
Как это все сделать?

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 12:48, 30-08-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


blackeangel, то есть, имея, например:
Код: Выделить весь код
Мама/ мыла /раму. /Рабы /не мы. Мы н/е ра/бы.
в результате должны получить:
Код: Выделить весь код
Мамараму. не мы. Мы нбы.
— так?

Update: может ли искомая подстрока быть пустой, т.е., такой:
Код: Выделить весь код
Мама мы//ла раму.
?

Последний раз редактировалось Iska, 30-08-2017 в 14:21.


Отправлено: 14:09, 30-08-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


В общем, смотрите:
Код: Выделить весь код
Sub Sample()
    Dim arrStrings(5, 5) As String
    Dim i As Integer, j As Integer
    
    Dim objRegExp As New RegExp
    
    …
    …
    …
    
    objRegExp.Pattern = "/.*?/" ' Или "/.+?/" для непустого шаблона.
    
    For i = LBound(arrStrings, 1) To UBound(arrStrings, 1)
        For j = LBound(arrStrings, 2) To UBound(arrStrings, 2)
            Do While objRegExp.Test(arrStrings(i, j))
                arrStrings(i, j) = objRegExp.Replace(arrStrings(i, j), "")
            Loop
        Next j
    Next i
End Sub
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:37, 30-08-2017 | #3


Аватара для blackeangel

Старожил


Сообщения: 329
Благодарности: 3

Профиль | Отправить PM | Цитировать


Iska, верно мыслите. Да, может быть пустой. То есть шаблон будет где то такой
objRegExp.Paternal = "/.*/"
А вот как заменить это вопрос.

Iska, спасибо, выручили, вся беда была, что не гонял так:
Код: Выделить весь код
Do While objRegExp.Test(arrStrings(i, j))
Делал через if и что то не мур мур.
Спасибо еще раз.

-------
Забудем боль, забудем страх -
И только ветер в парусах!


Отправлено: 14:38, 30-08-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата blackeangel:
То есть шаблон будет где то такой
objRegExp.Paternal = "/.*/" »
Почти. Именно такой может быть, если гарантированно может быть только ноль или одно вхождение. Если может быть больше одного — такой «жадный» шаблон «сожрёт» всё от первого до последнего символа «/», посему ему нужен квантификатор «?», дабы поиск был не «жадным».

Отправлено: 14:59, 30-08-2017 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] Заменить по регулярному выражению регулярное выражение

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
.NET - Регулярное выражение LilLoco Программирование и базы данных 19 04-05-2016 09:36
Разное - Помогите составить регулярное выражение по разбору функции morebeauty Программирование и базы данных 1 20-08-2014 08:37
VBA - Регулярное выражение: деление по словам, русские буквы Dr.DG Программирование и базы данных 3 29-10-2012 21:24
[решено] Вопрос по регулярному выражению в preg_split (PHP) ANR Вебмастеру 1 01-09-2010 14:58
Регулярное выражение benya Вебмастеру 27 26-08-2005 14:34




 
Переход