Zanim uruchomimy pierwszą pełną procedurę z wykorzystaniem techniki wyrażeń regularnych (RegExp) przyjrzyjmy się dodatkowo właściwościom obiektu RegExp
.Pattern pozwoli nam zdefiniować wzorzec porównawczy,
.Global określa, czy wzorzec dotyczy pierwszego (= False),
czy wszystkich wystąpień w tekście (= True),
.IgnoreCase określa sposób testowania wyrażenia ze względu na wielkość liter (domyślnie =False,
wyszukiwanie binarne uwzględniające wielkość liter),
oraz metodom obiektu Regexp:
.Test zwraca informację czy można dopasować wyrażenie do ciągu tekstowego,
.Replace dokonuje zamiany fragmentu wzorcowego na nowy wskazany ,
.Execute wykonuje operację zwracając obiekt Match z kolekcji MatchCollection.
W dużym skrócie podsumowując powyższe elementy obiektu RegExp określę to w sposób następujący- pozwalają one na wskazanie wzorca a następnie dokonanie zamiany fragmentu tekstu na inny lub pobranie poszczególnych elementów w całości lub dla pierwszego wystąpienia.
Czas na zebranie całości zagadnienia w konkretne rozwiązania i prezentację przykładowych pełnych konstrukcji kodu VBA. Wykonując poniższe operacje w środowisku VBA proszę nie zapomnieć o Kroku 1, a więc ustanowieniu referencji do biblioteki RegExp.
Przykład 1. zamiana wyrazów w ciągu tekstowy, wyraz 'jest' na 'był'
Przykład 2. z podanego ciągu tekstowego pozostawić tylko cyfry
Przykład 3. z podanego ciągu tekstowego usunąć wszystkie liczby
Przykład 4. W przykładzie nr 2 dodatkowo pozostały podwójne spacje oraz zbędna spacja przed kropką i wykrzyknikiem. To wszystko także chcemy usunąć i wyprostować. W tej sytuacji utworzymy kaskadowy mechanizm RegExp:
Przykład 5. W powyższym przykładzie zastosowana została technika zamiany kolejności wyrazów. Jest to jedna z wielu dodatkowych korzyści pracy z RegExp. Poniżej prosty przykład, który zamienia kolejność 3 pierwszych wyrazów podanego tekstu:
Przykład 6. Z podanego tekstu chcemy pobrać tylko adres e-mai. W tym celu wykorzystamy jeden z wielu możliwych wzorców odpowiadających adresowi e-mail i stworzymy następujący kod:
Powyższy przykład zamiast metody .Replace wykorzystuje metodę .Execute. Ale o tym napiszę już w kolejnym wpisie za kilka dni...
Osobom, które są zainteresowane wyrażeniami regularnymi polecam poniższe linki, które pozwolą na poszerzenie i ugruntowanie informacji przedstawionych w ostatnich postach. Linki te poświęcone są ogólni RegExp i niekoniecznie wskazują na bezpośrednie wykorzystanie tej techniki w VBA.
Korzystanie z wyrażeń regularnych w programie Microsoft Visual Basic 6.0Regular-Expressions.Info
.NET Framework Regular Expressions
RegExp Help
Regular-Expressions.info
Introduction to Regular Expressions
Brak komentarzy:
Prześlij komentarz