Szukaj na tym blogu

Regular Expression - Wyrażenia regularne RegExp VBA

 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