Ich versuche, bestimmte Muster in einer Zeichenfolge mit verschiedenen Ersatzmuster zu ersetzen.Bedingte ersetzen Regex übereinstimmt in Zeichenfolge
Beispiel:
string test = "test replacing \"these characters\"";
Was ich will, ist, alles zu tun, ersetzen ‚‘ mit ‚_‘ und alle anderen nicht Buchstaben oder eine Zahl Zeichen mit einem leeren String. Ich habe die folgende Regex erstellt und es scheint, richtig zu tokenisieren, aber ich bin nicht sicher, wie man (wenn möglich) eine bedingte Ersetzung unter Verwendung regex_replace
durchführt.
string test = "test replacing \"these characters\"";
regex reg("(\\s+)|(\\W+)");
erwartetes Ergebnis nach ersetzen wäre:
string result = "test_replacing_these_characters";
EDIT: Ich kann nicht boost, weshalb ich es aus den Tags links. Also bitte keine Antwort, die Boost beinhaltet. Ich muss dies mit der Standardbibliothek tun. Es kann sein, dass eine andere Regex das Ziel erreichen würde oder dass ich gerade zwei Passagen machen würde.
EDIT2: Ich erinnerte mich nicht, welche Zeichen in \w
zur Zeit meiner ursprünglichen Regex enthalten waren, nachdem ich es nachgeschlagen habe, habe ich den Ausdruck weiter vereinfacht. Wiederum ist das Ziel, dass alle passenden \ s + durch '_' ersetzt werden sollen und alles, was zu \ W + passt, sollte durch eine leere Zeichenfolge ersetzt werden.
Warum fallen Sie das letzte '" '-char in Ihrem Beispiel Ausgabe –
@rubberboots - weil nur Leerraum sollte mit einem Unterstrich, jede andere nicht Buchstaben und Ziffer ersetzt werden Charakter sollte mit nichts ersetzt werden – pstrjds
Ich sehe, so dass Sie verschiedene Ersatztexte in einem Durchgang haben wollen.A funktioniert nicht in C++ Regex.Wenn jemand einen Trick dafür, möchte ich das verwenden auch ;-) –