Heim > Backend-Entwicklung > C++ > Hauptteil

Wie verwende ich reguläre Ausdrucksfunktionen in C++?

PHPz
Freigeben: 2023-11-18 11:41:38
Original
1153 Leute haben es durchsucht

Wie verwende ich reguläre Ausdrucksfunktionen in C++?

Wie verwende ich die reguläre Ausdrucksfunktion in C++?

Reguläre Ausdrücke sind ein leistungsstarkes Textverarbeitungstool, mit dem Muster im Text abgeglichen, gesucht und ersetzt werden können. In C++ können wir die Funktionsbibliothek für reguläre Ausdrücke verwenden, um Text zu verarbeiten. In diesem Artikel wird die Verwendung regulärer Ausdrucksfunktionen in C++ vorgestellt.

Zuerst müssen wir die Regex-Header-Datei aus der C++-Standardbibliothek einbinden:

#include <regex>
Nach dem Login kopieren

Als nächstes können wir mit std::regex ein reguläres Ausdrucksobjekt deklarieren und ihm das passende Muster übergeben. Wenn wir beispielsweise eine Zeichenfolge abgleichen möchten, die aus mehreren Buchstaben und Zahlen besteht, können wir den folgenden Code verwenden:

std::regex pattern("[a-zA-Z0-9]+");
Nach dem Login kopieren

Bei der Verwendung regulärer Ausdrücke können wir auch einige Flags angeben, um das Abgleichverhalten zu ändern. Zu den gängigen Flags gehören:

  • std::regex_constants::ECMAScript: Verwenden Sie die Syntax für reguläre Ausdrücke im ECMAScript-Stil;
  • std::regex_constants::grep: Verwenden Sie die Syntax für reguläre Ausdrücke im Grep-Stil; : Verwenden Sie die erweiterte POSIX-Syntax für reguläre Ausdrücke.
  • std::regex_constants::icase: Groß- und Kleinschreibung ignorieren.
  • Sie können ein passendes Logo entsprechend der tatsächlichen Situation auswählen.
  • Bevor wir den regulären Ausdrucksabgleich durchführen, müssen wir ein std::smatch-Objekt definieren, um die Abgleichsergebnisse zu speichern. std::smatch ist ein Container mit übereinstimmenden Ergebnissen, der mehrere übereinstimmende Ergebnisse speichern kann. Zum Beispiel:
std::smatch matches;
Nach dem Login kopieren

Als nächstes können wir die Funktion std::regex_match verwenden, um zu prüfen, ob eine Zeichenfolge mit einem bestimmten regulären Ausdruck übereinstimmt. Der Prototyp dieser Funktion lautet wie folgt:

bool std::regex_match(const std::string& str, std::smatch& match, const std::regex& pattern);
Nach dem Login kopieren

Unter diesen ist str die abzugleichende Zeichenfolge, match ist das std::smatch-Objekt, das zum Speichern der Abgleichsergebnisse verwendet wird, und pattern ist das abzugleichende reguläre Ausdrucksobjekt. Die Funktion gibt einen Bool-Wert zurück, der angibt, ob die Übereinstimmung erfolgreich ist.

Das Folgende ist ein Beispielcode, der zeigt, wie man die Funktion std::regex_match verwendet, um zu überprüfen, ob eine Zeichenfolge eine gültige E-Mail-Adresse ist:

#include 
#include <regex>

int main()
{
    std::string email = "example@example.com";
    std::regex pattern("\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b");
    std::smatch matches;

    if (std::regex_match(email, matches, pattern))
    {
        std::cout << "Valid email address!" << std::endl;
    }
    else
    {
        std::cout << "Invalid email address!" << std::endl;
    }

    return 0;
}
Nach dem Login kopieren

Zusätzlich zur Verwendung der Funktion std::regex_match für den vollständigen Abgleich können wir dies auch tun Verwenden Sie die Funktion std ::regex_search, um einen teilweisen Abgleich durchzuführen. Der Prototyp der Funktion std::regex_search lautet wie folgt:

bool std::regex_search(const std::string& str, std::smatch& match, const std::regex& pattern);
Nach dem Login kopieren

Die Funktion std::regex_search durchsucht eine Zeichenfolge nach einer beliebigen Teilzeichenfolge, die mit dem angegebenen regulären Ausdruck übereinstimmt, und speichert die übereinstimmenden Ergebnisse in einem std::smatch-Objekt.

Hier ist ein Beispielcode, der zeigt, wie Sie mit der Funktion std::regex_search nach allen Ganzzahlen in einer Zeichenfolge suchen:

#include 
#include <regex>

int main()
{
    std::string text = "abc123def456ghi789";
    std::regex pattern("\d+");
    std::smatch matches;

    while (std::regex_search(text, matches, pattern))
    {
        std::cout << matches.str() << std::endl;
        text = matches.suffix().str();
    }

    return 0;
}
Nach dem Login kopieren

Das obige Beispiel gibt Folgendes aus: „123“, „456“ und „789“ bzw. Zeichen Drei ganze Zahlen in der Zeichenfolge.

Zusätzlich zum Abgleichen und Suchen können wir auch die Funktion std::regex_replace verwenden, um den Teil der Zeichenfolge zu ersetzen, der mit dem regulären Ausdruck übereinstimmt. Der Prototyp der Funktion std::regex_replace lautet wie folgt:

std::string std::regex_replace(const std::string& str, const std::regex& pattern, const std::string& replacement);
Nach dem Login kopieren

Die Funktion std::regex_replace durchsucht die Zeichenfolge str nach allen Teilzeichenfolgen, die mit dem angegebenen regulären Ausdrucksmuster übereinstimmen, und ersetzt sie durch die Ersatzzeichenfolge.

Hier ist ein Beispielcode, der zeigt, wie Sie mit der Funktion std::regex_replace alle Leerzeichen in einer Zeichenfolge durch Unterstriche ersetzen:

#include 
#include <regex>

int main()
{
    std::string text = "Hello,   World!";
    std::regex pattern("\s+");
    std::string replacement = "_";

    std::string result = std::regex_replace(text, pattern, replacement);
    std::cout << result << std::endl;

    return 0;
}
Nach dem Login kopieren

Das obige Beispiel gibt Folgendes aus: „Hello,_World!“ und ersetzt alle Leerzeichen durch Unterstriche.

Das Obige ist eine Einführung in die Verwendung der regulären Ausdrucksfunktion in C++. Durch die Verwendung regulärer Ausdrücke können wir Zeichenfolgen effektiv verarbeiten und flexiblere und leistungsfähigere Textverarbeitungsfunktionen erreichen. Ich hoffe, dass dieser Artikel Ihnen hilft, reguläre Ausdrucksfunktionen in C++ zu verstehen und zu verwenden.

Das obige ist der detaillierte Inhalt vonWie verwende ich reguläre Ausdrucksfunktionen in C++?. 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