Ersetzen Sie Regex-Übereinstimmungen bedingt durch Zeichenfolgen

Ich versuche, bestimmte Muster in einer Zeichenfolge durch andere Ersatzmuster zu ersetzen.

Beispiel:

string test = "test replacing \"these characters\"";

Ich möchte einfach alle '' durch '_' und alle anderen Zeichen, die keine Buchstaben oder Zahlen sind, durch eine leere Zeichenfolge ersetzen. Ich habe den folgenden regulären Ausdruck erstellt und er scheint korrekt zu sein, aber ich bin nicht sicher, wie ich (wenn möglich) einen bedingten Austausch mit ausführen sollregex_replace.

string test = "test replacing \"these characters\"";
regex reg("(\\s+)|(\\W+)");

Das erwartete Ergebnis nach dem Ersetzen wäre:

string result = "test_replacing_these_characters";

EDIT: Ich kann Boost nicht verwenden, weshalb ich es aus den Tags herausgelassen habe. Also bitte keine Antwort die Boost beinhaltet. Ich muss das mit der Standardbibliothek machen. Es kann sein, dass ein anderer Regex das Ziel erreichen würde oder dass ich nur mit zwei Durchgängen feststecke.

EDIT2: Ich erinnere mich nicht, welche Zeichen in enthalten waren\w Zum Zeitpunkt meines ursprünglichen regulären Ausdrucks habe ich nach dem Nachschlagen den Ausdruck weiter vereinfacht. Wieder ist das Ziel, dass alles, was \ s + entspricht, durch '_' ersetzt wird und alles, was \ W + entspricht, durch eine leere Zeichenkette ersetzt wird.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage