Qt - wyrażenia regularne

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2084 razy

Wyrażenia regularne to zaawansowany system przetwarzania informacji tekstowych. Do tego celu w Qt służą dwie klasy: QRegExp i QRegularExpression, przy czym ta druga jest nowszą wersją tej pierwszej.

Przykład wykorzystania klasy QRegularExpression do znajdowania tekstu zawartego w obiekcie klasy QString

Za pomocą wyrażeń regularnych można wyszukiwać fragmenty tekstu znajdującego się w obiekcie klasy QString:

QString string("Post code 00-111 next post code 00-234"); QRegularExpression re("\\d{2,2}\-\\d{3,3}"); int index = string.indexOf(re); while(index != -1){ qDebug() << string.mid(index, 6); index += 6; index = string.indexOf(re, index); }

Powyższy kod wyciąga z tekstu numery kodów pocztowych, a wynikiem jego działania będzie:

"00-111"
"00-234"

Wyrażenie \\d - oznacza cyfrę a następujące po nim {2,2} oznacza liczbę minimalną i maksymalną wystąpienia znaku.

Niektóre znaczniki używane w wyrażeniach regularnych

Dopasowanie wyszukiwanego elementu w tekście umożliwiają specjalne znaczniki, oto niektóre z nich:

Dopasowanie zestawów znaków

Wyrażenie regularne umożliwiają dopasowywanie zestawów znaków, oto przykłady:

Kwantyfikatory wystąpienia znaków

Regularne wyrażenie również umożliwiają sterowanie liczebnością wystąpienia danego znaku we wzorcu. Oto lista kwantyfikatorów oznaczających powtarzalność znaku:

Znajdowanie dopasowania za pomocą metody match klasy QRegularExpression

Zamiast metody klasy QString można wykorzystać metodę match klasy QRegularExpression np. w następujący sposób:

QString string("Post code 00-111 next post code 00-234"); QRegularExpression re("\d{2,2}\-\d{3,3}"); int index = 0; QRegularExpressionMatch match = re.match(string, index); while(match.hasMatch()){ qDebug() << match.capturedTexts(); index = match.capturedEnd(); match = re.match(string, index); }
Strony powiązane
strony powiązane
  1. - opis klasy QRegularExpression w dokumentacji Qt