C++: Reguläre Audrücke verstehen und umsetzen
-
Wie mache ich es, bei regex Groß- und Kleinschreibung zu ignorieren? Beispiel:
std::string s = "Mein Name ist Peter Pan."; std::regex rex("Peter"); if (std::regex_search(s, rex)) { qDebug() << "Gefunden!"; }
Ich möchte das "Peter", "peter", "PETER" usw gefunden wird. Das lässt sich zwar mit Zeichenklassen lösen: [Pp][Ee][Tt]Ee]Rr], aber es soll auch eine viel einfachere Funktion geben die Groß- und Kleinschreibung ignoriert. Bei egrep geht das z.B. mit -i. Wie bekomme ich das in C++ hin?
-
std::regex r{"bla", std::regex_constants::icase}
-
Danke, das klappt super! Allerdings wirkt es auf den kompletten regulären Ausdruck. Gibt es eine Möglichkeit, das dass Ingorieren von Groß- und Kleinschreibung sich nur auf einen Teil bezieht? Also in diesem Fall nur auf den Namen?
-
Ich glaube nicht dass das funktioniert aber probiere mal:
(?i)bla
. Wenn das wie erwartet mit den verschiedenen unterstützten Varianten in C++ nicht funktioniert (ECMAScript, basic, extended, awk, grep, egrep). (Änderbar wie die icase option).Dann fiele mir noch ein den Qt Regex zu versuchen, wie von firefly vorgeschlagen, vielleicht unterstütz der diesen marker.
-
Dieser Beitrag wurde gelöscht!
-
Das schluckt der Compiler leider nicht:
terminate called after throwing an instance of 'std::regex_error'
what(): Invalid special open parenthesis.