Показать полную графическую версию : [решено] Заменить по регулярному выражению регулярное выражение
blackeangel
30-08-2017, 12:48
В общем надо в элементах двумерного массива удалить все что располагается между /*/. Это надо делать регуляркой, тк содержимое неизвестно и располагается в любом месте строки, а то и не раз.
Как это все сделать?
blackeangel, то есть, имея, например:
Мама/ мыла /раму. /Рабы /не мы. Мы н/е ра/бы.
в результате должны получить:
Мамараму. не мы. Мы нбы.
— так?
Update: может ли искомая подстрока быть пустой, т.е., такой:
Мама мы//ла раму.
?
В общем, смотрите:
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
blackeangel
30-08-2017, 14:38
Iska, верно мыслите. Да, может быть пустой. То есть шаблон будет где то такой
objRegExp.Paternal = "/.*/"
А вот как заменить это вопрос.
Iska, спасибо, выручили, вся беда была, что не гонял так:
Do While objRegExp.Test(arrStrings(i, j))
Делал через if и что то не мур мур.
Спасибо еще раз.
То есть шаблон будет где то такой
objRegExp.Paternal = "/.*/" »
Почти. Именно такой может быть, если гарантированно может быть только ноль или одно вхождение. Если может быть больше одного — такой «жадный» шаблон «сожрёт» всё от первого до последнего символа «/», посему ему нужен квантификатор «?», дабы поиск был не «жадным».
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.