Heim > Backend-Entwicklung > C++ > Wie kann ich mit „std::regex' von C effizient mehrere Wörter in einer Zeichenfolge zuordnen?

Wie kann ich mit „std::regex' von C effizient mehrere Wörter in einer Zeichenfolge zuordnen?

DDD
Freigeben: 2024-11-29 12:51:11
Original
323 Leute haben es durchsucht

How Can I Efficiently Match Multiple Words in a String Using C  's `std::regex`?

Mehrere Ergebnisse mit std::regex abgleichen

Das Abgleichen mehrerer Vorkommen von Wörtern in einer Zeichenfolge kann mit regulären Ausdrücken eine Herausforderung sein. Obwohl der Ausdruck „(bS*b){0,}“ scheinbar mit allen aufeinanderfolgenden Wörtern in einer Zeichenfolge übereinstimmt, liefert er möglicherweise nicht die gewünschte Ausgabe. Stattdessen wird ein iterativer Ansatz empfohlen.

Es folgt der überarbeitete Code:

#include <iostream>
#include <string>
#include <regex>

int main() {
    regex exp("(\b\S*\b)");
    smatch res;
    string str = "first second third forth";

    string::const_iterator searchStart(str.cbegin());
    while (regex_search(searchStart, str.cend(), res, exp)) {
        cout << (searchStart == str.cbegin() ? "" : " ") << res[0];
        searchStart = res.suffix().first;
    }
    cout << endl;

    return 0;
}
Nach dem Login kopieren

In diesem aktualisierten Code verwenden wir eine While-Schleife, um die Zeichenfolge zu durchlaufen, während wir Suchen nach regulären Ausdrücken durchführen. Die Schleife beginnt damit, dass der searchStart-Iterator auf den Anfang der Zeichenfolge gesetzt wird. Dann, innerhalb jeder Iteration:

  1. Die Funktion regex_search sucht nach dem ersten Vorkommen des Musters innerhalb der Teilzeichenfolge, beginnend bei searchStart.
  2. Wenn eine Übereinstimmung gefunden wird, geben wir das passende Wort aus .
  3. Wir aktualisieren den searchStart-Iterator, um mit der Suche nach dem übereinstimmenden Wort zu beginnen.

Von Indem wir die Zeichenfolge durchlaufen, bis keine Übereinstimmungen mehr gefunden werden, können wir alle Wörter einzeln ausgeben.

Das obige ist der detaillierte Inhalt vonWie kann ich mit „std::regex' von C effizient mehrere Wörter in einer Zeichenfolge zuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage