W ostatnim wpisie dot. wyrażeń regularnych RegExp chciałbym zwrócić uwagę metodę
.Execute, którą wykorzystałem poprzednio w celu odnalezienia i pobrania adresu e-mail z podanego ciągu tekstowego.
Metoda
.Execute zwraca kolekcję
Matches Collection, która zawiera wszystkie wystąpienia ciągów tekstowych spełniających określone kryteria. W tej sytuacji w relatywnie łatwy sposób możemy pobrać elementy odpowiadające naszemu wzorcowi.
Prześledźmy to na jednym tylko przykładzie, którego zadaniem będzie pobranie wszystkich adresów e-mail z podanego ciągu tekstowego. W zakresie dalszego zrozumienia zastosowania kolekcji Matches odsyłam do komentarzy w poniższym kodzie.
01 | Sub RegExp_pobranie_wybranych() |
04 | Dim objRE As New RegExp |
09 | Tekst = "Tekst zawiera e-maile adres.email@domena.com.pl w treści. " & _ |
10 | "E-maile jan.kowalski@domena.pl są na różnych pozycjach. " & _ |
11 | "regexp_cool@domena.com oraz posiadają różną konstrukcję." |
16 | "([A-Za-z0-9_\.-]+)@([A-Za-z0-9_\.-]+[A-Za-z0-9_][A-Za-z0-9_])" |
20 | Set Wynik = .Execute(Tekst) |
26 | For Each EMail In Wynik |
27 | Debug.Print EMail.Value |
30 | Debug.Print Wynik(0).Value |
31 | Debug.Print Wynik(1).Value |
32 | Debug.Print Wynik(2).Value |
37 | For Each EMail In Wynik |
39 | Debug.Print EMail.Value, EMail.FirstIndex, EMail.Length |
Brak komentarzy:
Prześlij komentarz