Diese Website verwendet Cookies.
Durch die Nutzung erklärst du dich mit dem Einsatz von Cookies einverstanden. Mehr Infos OK
<div class="text_box" style="z-index:994;"><h3>Bitte aktiviere HTML Frames um die Website mit allen funktionen nutzen zu k&ouml;nnen!</h3></div>
Nutze den IE(Internet Explorer) um alle VBScripts nutzen zu können!
Installiere Silverlight und benutze einen Internet Browser( z. B. IE(Internet Explorer)) der Silverlight unterstützt um alle Silverlight Apps nutzen zu können.
Klicke hier um eine Sichere SSL verbindung zu starten.
Loading...

Reguläre Ausdrücke in C++

 

Downloads:
Diese Seite: mk16.de/recpp
PDF: mk16.de/Computer/HTML/Regex_in_CPP.pdf mk16.de/recpp-pdf
ODT: mk16.de/Computer/HTML/Regex_in_CPP.odt mk16.de/recpp-odt

Beispiel Code:

#include <iostream>

#include <regex>

 

using namespace std;

 

int main()

{

regex reg("mehr (.*) (.*)\.\nSo habe er Pech.", regex_constants::icase | regex_constants::extended);

smatch m;

string str = "Er habe geflucht.\nSo wird ihm der Teufel gewehrt sein.\nUnd keiner ihn mehr retten kann.\nSo habe er Pech. So habe er die Nacht zu sein gemacht.So habe er bereut die Tat, dann sei auch der Tag s[...]"; // from mk16.de - Die Strafe der Nacht

bool res = regex_search(str, m, reg);

if(res and m.size() > 1)

{

for(int i = 0; i < m.size(); i++)

cout << "x=" << i << ": " << m.str(i) << endl;

cout << "Ausgabe 1: " << m.str(1) << " " << m.str(2) << endl;

cout << "Ausgabe 2: " << "Ich " << m.str(2) << " ihn " << m.str(1) << "." << endl;

}

return 0;

}

 

Um die Regexp-Funktionen in C++ nutzen zu können müssen wir <regex> importieren(einbetten).

Als nächstes legen wir den Regulären Ausdruck fest mit „regex reg(„Regulärer Ausdruck“, regex_constants);“. „regex“ ist der Typ, „reg“ ist der Name, „„Regulärer Ausdruck““ ist unser Regex, regex_constants sind Angaben(Multiline) wie mit dem Regex verfahrt werden soll.

regex_constants::icase

Groß- und Kleinschreibung ignorieren

regex_constants::extended

Multiline

Weitere Angaben findet man auf(10.12.2017):

http://www.cplusplus.com/reference/regex/regex_constants/

http://en.cppreference.com/w/cpp/regex/syntax_option_type

Als nächstes legen wir „smatch m“ an. „smatch“ ist der Typ, „m“ ist der Name.

Es gibt auch noch „cmatch“. „cmatch“ verwenden wir wenn wir es als Rohe-Zeichenkette angeben.

 

smatch

smatch m;

string str = "Er habe geflucht.\nSo wird ihm der Teufel gewehrt sein.\nUnd keiner ihn mehr retten kann.\nSo habe er Pech. So habe er die Nacht zu sein gemacht.So habe er bereut die Tat, dann sei auch der Tag s[...]"; // from mk16.de - Die Strafe der Nacht

bool res = regex_search(str, m, reg);

cmatch

cmatch m;

bool res = regex_search("Er habe geflucht.\nSo wird ihm der Teufel gewehrt sein.\nUnd keiner ihn mehr retten kann.\nSo habe er Pech. So habe er die Nacht zu sein gemacht.So habe er bereut die Tat, dann sei auch der Tag s[...]", m, reg);

 

Als nächstes geben wir den Befehl die Regex-Auswertung zu starten:

bool res = regex_search(str, m, reg);

 

bool“(Boolean) ist der Typ, „res“(Result) ist der Name, „regex_search“ ist die Funktion für die Auswertung der Regex, „str“(String) ist der Text der „durchsucht“ wird, „m“(match) ist die „match“ in der die Ergebnisse gespeichert werden, „reg“(RegEx) ist der Regex.

 

Als nächstes überprüfen wir ob die Auswertung erfolgreich war. Wenn ja dann ist res=True sonst ist res=False. Mit „ m.size() > 1“ überprüfen wir ob das Match mehr als ein Ergebnis hat.

Danach geben wir es in einer for-Schleife(for-loop) aus. Danach bilden wir Sätze mit den Ergebnissen.

 

Die ganze Ausgabe des Codes ist:

x=0: mehr retten kann.

So habe er Pech.

x=1: retten

x=2: kann

Ausgabe 1: retten kann

Ausgabe 2: Ich kann ihn retten.

 

Dokument vom 10.12.2017. Erstellt von Marek K.(m.k@mk16.de), Webmaster von mk16.de.

www.hundert-prozent.net


Startseite | Teilen | Einstellungen | Impressum