Regular Expression - czyli RegExp.
Narzędzie to nie jest standardowo dostępne w VBA, aby go wykorzystać należy dodać referencję Microsoft VBScript Regular Expressions 5.5.
Pattern - tu wpisujemy wzorzec ("tekst")
IgnoreCase - tu możemy ustawić czy uwzględniamy wielkość liter (true,false)
Global - Możemy wymusić przeszukiwanie całego tekstu lub też zakończyć operację po pierwszym udanym dopasowaniu (true,false)
MultiLine - (true,false) Tekst zawierający znak końca linii jest dzielony na wirtualne mniejsze tekst,y które są sprawdzane każde oddzielnie, zaś znak końca linii jest pomijany podczas sprawdzania. Opcja ta daje pożądane rezultaty wraz z opcją Global
Ponadto występują następujące metody:
Test - umożliwia sprawdzenie czy dany wzorzec pasuje do badanego ciągu tekstowego
Execute - zwraca kolekcję MatchCollection zawierającą wszystkie dopasowania zgodnie z wzorcem
Replace - umożliwia zamianę tekstu pasującego do wzorca na inny podany w parametrze
Przykłady poniżej:
Test
Sub reg_test()
Dim r As New RegExp
Dim sIn As String
Dim bOut As Boolean
sIn = "to jest test " & VBA.vbCrLf & " to jest kolejny test"
With r
.Pattern = "test"
.IgnoreCase = True
.Global = False
.MultiLine = False
bOut = .Test(sIn)
End With
If bOut Then
Debug.Print "wzorzec odnaleziony w przeszukiwanym stringu"
Else
Debug.Print "brak przypisania"
End If
End Sub
Replace
Sub reg_replace()
Dim r As New RegExp
Dim sIn As String
Dim sOut As String
Dim sReplace As String
sIn = "to jest test " & VBA.vbCrLf & " to jest kolejny test"
sReplace = "ble"
With r
.Pattern = "test"
.IgnoreCase = True
.Global = True
.MultiLine = False
sOut = .Replace(sIn, sReplace)
End With
Debug.Print sOut
End Sub
Execute
Sub reg_execute()
Dim r As New RegExp
Dim colMatches As MatchCollection
Dim objMatch As Match
Dim sIn As String
sIn = "to jest test " & VBA.vbCrLf & " to jest kolejny test"
With r
.Pattern = "test"
.IgnoreCase = True
.Global = True
.MultiLine = False
Set colMatches = .Execute(sIn)
End With
For Each objMatch In colMatches
Debug.Print objMatch.Value, objMatch.FirstIndex
Next
End Sub
Znalazłem tu:
http://vbamania.blogspot.com/2009/10/regexp-jak-to-wykorzystac.html
Brak komentarzy:
Prześlij komentarz