Можно ли сделать что-то вроде следующего:Замена захваченных групп в регулярных выражениях
Sub GetANewDirectory()
Dim MyString As String
MyString = "C:\File1\File2\File3\AnImportantFile.txt"
Dim MyRegEx As New VBScript_RegExp_55.RegExp
With MyRegEx
.Global = True
.IgnoreCase = True
.MultiLine = False
.Pattern = ".*(File1)\\(File2)\\(File3).*"
End With
Dim MyMatch As Variant
Set MyMatch = MyRegEx.Execute(MyString)
' The following syntax doesn't work
MyMatch(0).SubMatches(0) = Func1(MyMatch(0).SubMatches(0))
MyMatch(0).SubMatches(1) = Func2(MyMatch(0).SubMatches(1))
MyMatch(0).SubMatches(2) = Func3(MyMatch(0).SubMatches(2))
Debug.Print MyMatch(0)
' My desired result is:
' C:\File1Apple\File2Banna\File3Mango\AnImportantFile.txt
End Sub
Function Func1(Arg1 As String) As String
Func1 = Arg1 & "Apple"
End Function
Function Func2(Arg1 As String) As String
Func2 = Arg1 & "Banna"
End Function
Function Func3(Arg1 As String) As String
Func3 = Arg1 & "Mango"
End Function
Мои извинения, если это кажется немного абстрактным, но у меня есть реальная потребность в чем-то вроде этого. Я уверен, что я могу выполнить задачу без регулярных выражений, но я вижу, где эта функция может быть полезна.
Довольно точно, что вы не можете напрямую присвоить значение подгрузке –