Доброго времени суток.
Вот наваял своим мизерным VBA опытом.
Наверное, это все может быть значительно короче.
Мне лично осталось усвоить, как таблицу умножения, метасимволы.
Function regex(strInput As String, strPattern As String, strWhat As String, strWith As String) As String
Dim inputRegexObj As New VBScript_RegExp_55.RegExp
Dim inputMatches As Object
Dim replaceNumber As Integer
Dim i As Integer
Dim substr As String
With inputRegexObj
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
Set inputMatches = inputRegexObj.Execute(strInput)
If inputMatches.Count = 0 Then
regex = strInput
Else
replaceNumber = inputMatches.Count
For i = 0 To replaceNumber - 1
With inputRegexObj
.Global = False
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
Set inputMatches = inputRegexObj.Execute(strInput)
substr = inputMatches(0).Value
regex = Left(strInput, inputMatches(0).FirstIndex) & Replace(substr, strWhat, strWith) _
& Right(strInput, (Len(strInput) - inputMatches(0).FirstIndex - inputMatches(0).Length))
strInput = regex
Next
End If
End Function
Но, работает и заявленную задачу выполняет.
Буду признателен, если кто пожелает упростить (поправить), или дать конструктивное замечание.
Прилагаю простенький файл.
Повторюсь, что шаблоны (собственно и задачи) могут быть любыми с использованием
метасимволов RegExp.
Спасибо
Вот наваял своим мизерным VBA опытом.
Наверное, это все может быть значительно короче.
Мне лично осталось усвоить, как таблицу умножения, метасимволы.
Function regex(strInput As String, strPattern As String, strWhat As String, strWith As String) As String
Dim inputRegexObj As New VBScript_RegExp_55.RegExp
Dim inputMatches As Object
Dim replaceNumber As Integer
Dim i As Integer
Dim substr As String
With inputRegexObj
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
Set inputMatches = inputRegexObj.Execute(strInput)
If inputMatches.Count = 0 Then
regex = strInput
Else
replaceNumber = inputMatches.Count
For i = 0 To replaceNumber - 1
With inputRegexObj
.Global = False
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
Set inputMatches = inputRegexObj.Execute(strInput)
substr = inputMatches(0).Value
regex = Left(strInput, inputMatches(0).FirstIndex) & Replace(substr, strWhat, strWith) _
& Right(strInput, (Len(strInput) - inputMatches(0).FirstIndex - inputMatches(0).Length))
strInput = regex
Next
End If
End Function
Но, работает и заявленную задачу выполняет.
Буду признателен, если кто пожелает упростить (поправить), или дать конструктивное замечание.
Прилагаю простенький файл.
Повторюсь, что шаблоны (собственно и задачи) могут быть любыми с использованием
метасимволов RegExp.
Спасибо
Изменено: - 10.04.2017 12:43:52
(Некорректный формат)