Wyszukiwanie wyrażeń regularnych jest jednym z ulubionych przykładów autorów, ponieważ jest pełen najróżniejszych technik. Wyszukiwanie wyrażeń regularnych stanowi doskonałą metodę badania napisów. Zamiast sprawdzać dokładnie, czy dany napis ma konkretną wartość lub nawet, czy zawiera jakiś konkretny podnapis, to za pomocą wyrażeń regularnych można dopasowywać napis do podawanych wzorców. Możemy na przykład szukać napisów zaczynających się od litery „f ’ lub napisów zaczynających się od litery „f” i składających się w dalszej kolejności z kilku podkreśleń. Stosowane wzorce mogą być naprawdę wyrafinowane.
Za pomocą kodu wyszukującego wyrażenia regularne można sprawdzić, czy jakiś napis pasuje do podanego wzorca. W tym celu definiuje się wzorzec, umieszczając w napisie pewne znaki specjalne, utworzone z dwóch ukośników (\\) i litery. W zależności od wpisanej litery, mają one następujące znaczenie: d — oznacza dowolną cyfrę;
D — nie uznaje napisu, jeśli jest w nim jakaś cyfra; w — oznacza dowolną literę (a-z, A-Z) lub cyfrę;
W — nie uznaje napisu, jeśli jest w nim jakaś litera lub cyfra; s — oznacza dowolny znak odstępu (spacje, tabulatory, końce wiersza itp.);
S — nie uznaje napisu, jeśli jest w nim jakiś odstęp.
Podany wzorzec będzie pasował do wszystkich napisów zaczynających się od napisu „to”, po którym następują kolejno odstęp, napis „jest” albo odstęp i napis „testl”:
Literał li("to\\sjest\\stest1");
Dalej podano zawartość plików kodów źródłowych realizujących szukanie wyrażeń regularnych. Plik nagłówkowy ma nazwę regexp.h, a plik kodu — regexp.cpp. Numery w komentarzach oznaczają numery wskazówek z części I. Pliki źródłowe i odpowiadający im plik projektu Visual C++ można znaleźć w folderze exp na CD-ROM-ie dołączonym do tej książki.
#ifndef _REGEXP_H #defme _REGEXP_H #include <typeinfo.h>
#include <string.h>
void TestRegExp();
// Informacje o powtórzeniach, typedef enum