2011-05-19 2 views
1

Cette expression rationnelle rognera la chaîne lors des sauts de ligne.
Je veux qu'il coupe les deux fin seulement et de préserver les sauts de ligne au milieu.Aide avec boost :: regex trim

string s("  Stack \n Overflow "); 
boost::regex expr("^[ \t]+|[ \t]+$"); 
std::string fmt(""); 
cout << boost::regex_replace(s, expr, fmt) << endl; 

Répondre

2

Si vous voulez faire le match d'expression régulière au début et à la fin de la chaîne d'entrée (veulent préserver les espaces autour de l'entre-deux \n), \A et \z au lieu de ^ et $ pourrait atteindre le but.
Par exemple:

boost::regex expr("\\A[ \t]+|[ \t]+\\z"); 
+0

Cela ne semble pas produire des résultats cohérents. Essayez d'analyser ceci par exemple: string s ("Stack \ n Overflow \ r") – user754425

+0

Pourriez-vous indiquer le résultat que vous attendez de cette entrée? Par exemple, il a produit le résultat «Stack \ n Overflow \ r» 'dans mon environnement. –

+0

Mon mauvais. L'expression que je voulais que vous testiez est cette chaîne s ("Stack \ n Over \ rflow"). Le résultat que j'obtiens est cette pile flowOver – user754425