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);
}