Ich versuche, jeden nicht alpha Zeichen in einer Zeichenkette mit " "
mit boost zu ersetzen:Boost-regex: [: alpha:] und akzentuierte Zeichen
std::string sanitize(std::string &str)
{
boost::regex re;
re.imbue(std::locale("fr_FR.UTF-8"));
re.assign("[^[:alpha:]]");
str = boost::regex_replace(str, re, " ");
return str;
}
int main()
{
std::string test = "(ça) /.2424,@ va très bien ?";
cout << sanitize(test) << endl;
return 0;
}
Das Ergebnis ist a va tr s bien
aber ich möchte ça va très bien
bekommen.
Was fehlt mir?
Randnotiz: In PCRE würden Sie die 'u'-Flagge verwenden, um die gewünschten Ergebnisse zu erzielen. Ich habe die Boost-Bibliothek durchsucht, konnte aber nichts vielversprechendes finden. Bei einer anderen Anmerkung möchten Sie vielleicht ein Plus zu Ihrem Ausdruck '[^ [: alpha:]] +' hinzufügen, dann müssen Sie die Leerzeichen von links/rechts trimmen. [Demo] (http://regex101.com/r/cG1iM2) – HamZa
Danke für den Tipp @HamZa! – Nicolas