VBA RegEx

Co to jest wyrażenie regularne w programie Excel VBA?

RegEx oznacza „ Wyrażenie regularne ” w VBA Excel i jest sekwencją znaków, która definiuje wzorzec wyszukiwania w celu znalezienia określonego wzorca znaków w ciągu wartości. W prostym słowie „możemy utworzyć wzorzec wyrażenia regularnego i użyć go do wyszukania ciągu tego wzorca”.

VBA RegEx to model obiektowy. Wiem, że to onieśmielające, patrząc na wyjaśnienie, ale chodzi o to, że natura przedmiotu. Jedną z rzeczy, o których musisz tutaj pamiętać, jest to, że VBA RegEx (wyrażenie regularne) jest obiektem funkcji tekstowej, podobnie jak nasze inne funkcje tekstowe „LEWO, PRAWO, ŚRODEK”.

Jak włączyć wyrażenie regularne w Excel VBA?

Jak powiedziałem, VBA RegEx jest modelem obiektowym w VBA, podobnie jak nasze zewnętrzne oprogramowanie, takie jak „MS Word” i „MS PowerPoint”. Podobnie RegEx jest również Component Object Model (COM), do którego musimy się odwoływać w edytorze VBA. Aby włączyć wyrażenie regularne, wykonaj poniższe czynności.

Krok 1: Przejdź do Edytora Visual Basic (Alt + F11)

Krok 2: Przejdź do narzędzi i referencji.

Krok 3: Teraz zobaczysz odniesienia do projektu VBA. Przewiń w dół i wybierz „Microsoft VBScript Regular Expression 5.5”

Krok 4: Teraz kliknij OK. Możemy teraz uzyskać dostęp do tego obiektu RegEx w kodowaniu VBA.

Przykład - teraz pokażę jeden prosty przykład. Załóżmy, że masz słowa „Sprzedaż 2019, Sprzedaż 2018 i Sprzedaż 2017”. Jeśli zdefiniujesz wzorzec jako [0 - 7], pasuje on do wszystkich liczb od 0 do 7, więc nasze dopasowania będą miały wartość 201, 201 i 2017 w każdym ciągu.

VBA RegEx Pattern

Wzorzec funkcji VBA RegEx wygląda onieśmielająco i jego zrozumienie zajmuje trochę czasu. Widzimy tutaj dwa rodzaje sekwencji znaków, jeden to „Znaki dosłowne”, a drugi to „Metaznaki”.

  • Znaki literalne wyszukują dokładne dopasowanie podanego ciągu. Na przykład, dosłowny ciąg znaków „EFG” po prostu wyszukuje wszystkie dopasowania „EFG” w podanym tekście.
  • Metaznaki to nic innego jak kombinacja znaków o dokładnym znaczeniu we wzorcu RegEx. To zupełnie inne niż dosłowne postacie. Jest to ogromny temat do omówienia, poniżej znajduje się kilka ważnych składni.
SkładniaOpisPrzykładPrzykładowe dopasowanie
.Dopasowuje dowolny pojedynczy znak ciągu wejściowegoptZwierzę domowe. Pot, Put, Pattern
[]Dopasowuje dowolny pojedynczy znak między nawiasem w ciągu wejściowym[pt]Pasuje do p lub t
[^]Dopasowuje dowolny pojedynczy znak, a nie między nawiasami w ciągu wejściowym[^ pt]Nie pasuje ani do p ani t
[First-Last]Dopasowuje dowolny znak z zakresu podanego w nawiasie[0–9]Pasuje do dowolnej cyfry od 0 do 9
[az]Dopasowuje wszystkie małe litery od a do z
[AZ]Pasuje do wszystkich wielkich liter od A do Z.
\ sPasuje do dowolnego znaku odstępu-Odpowiada spacji, nowej linii lub znaku tabulacji
\ SPasuje do dowolnego znaku innego niż biała spacja-Znaki dopasowania nie są znakami spacji, nowej linii ani tabulatorem
\rePasuje do dowolnego znaku jednocyfrowegoSE 5 VG 6Mecze 5 i 6
\REPasuje do każdego pojedynczego znaku niebędącego cyfrąSE 5 VG 6Pasuje do SEVG

Właściwości i metody obiektu RegEx

Podobnie jak wszystkie nasze modele obiektów, RegEx również ma swoje własne właściwości i metody. Teraz zobaczymy szczegółowo jeden po drugim.

Właściwości obiektu VBA Regex

  • Wzorzec: służy do dopasowania podanego ciągu.
  • Ignoruj ​​wielkość liter: służy do ignorowania wielkich i małych liter.
  • Globalny: jeśli chcesz znaleźć wszystkie dopasowania we wzorcu, argumentem jest PRAWDA, w przeciwnym razie zostanie znalezione pierwsze dopasowanie.
  • Multi-Line: Jeśli chcesz znaleźć nowe podziały wierszy, możesz tego użyć.

Metody obiektu RegEx

  • Test: służy do sprawdzenia, czy wzorzec można znaleźć w podanym ciągu. To zwróci TRUE, jeśli zostanie znaleziony lub FALSE.
  • Wykonaj: Zwróci wszystkie dopasowania wzorca względem znalezionego ciągu.
  • Zastąp: Spowoduje to zastąpienie szukanego ciągu nowym ciągiem.

Przykład wyrażenia regularnego w VBA Excel

Teraz spójrz na poniższy przykładowy kod VBA.

Możesz pobrać ten szablon VBA RegEx Excel tutaj - szablon VBA RegEx Excel

Kod:

Sub RegEx_Example () Dim RegEx As Object, MyString As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "[0-9] +" End With MyString = "Data urodzenia to 1985" MsgBox RegEx .Test (MyString) MyString = "Data urodzenia to ???" MsgBox RegEx.Test (MyString) End Sub

fregular

W powyższym kodzie ustawiliśmy wzorzec wyszukiwania liczby od 0 do 9 w następujący sposób.

 Z wyrażeniem regularnym .Pattern = "[0-9] +" Zakończ na 

Następnie zmienna MyString = „Data urodzenia to rok 1985”, która zawiera wartości od 0 do 9, więc w naszym oknie komunikatu pojawi się wartość TRUE.

MyString = „Data urodzenia to ???” nie ma żadnych liczb od 0 do 9, więc zwróci FALSE jako wynik okien komunikatu.