PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : boost::regex unknown escape sequence '\s'



7.e.Q
23-10-2006, 14:00
Hi Leute,

ich möchte ein paar Parser-Funktionen meines Programms auf boost::regex umstellen und stoße damit auf einige Problem. Eines davon ist, daß ich verschiedene Escape Sequenzen nicht verwenden kann, weil ein Compiler sagt, daß er diese nicht kennt. Zum Beispiel '\s', was einen Whitespace Character darstellen soll.

Ich hab der Sauberkeit wegen -Werror als Compiler-Parameter übergeben, weil ich keine offenen Warnings in meinem Code haben möchte. Darauf will ich auch ungern verzichten...

Schon mal jemand über dasselbe Problem gestolpert? Was mach ich hier noch falsch?

Danke

Grüße,
Hendrik

edit:

Wer codiert bitte solch einen Schwachsinn?


try
{
boost::regex re("(ftp|http|https):\/\/(\w+\.)*(\w*)\/([\w\d]+\/{0,1})+");
if (!boost::regex_match(url, re))
{
throw "Your URL is not formatted correctly!";
}
}
catch (boost::regex_error& e)
{
cerr << "The regexp " << re << " is invalid!" << endl;
throw(e);
}


Das kann schonmal gar nicht gehen, weil re im catch Block völlig unbekannt ist. Übrigens kopiert von da: http://www.onlamp.com/pub/a/onlamp/2006/04/06/boostregex.html?page=2

Außerdem erhalte ich bei selbigem Block oben genannte Fehlermeldung, daß die Escape Sequenzen unbekannt sind... :p

Yonibear
23-10-2006, 14:20
Du musst das '\' selber auch nochmal maskieren damit es in den eigentlich String engebaut wird, also "\\s".

7.e.Q
23-10-2006, 14:21
Ah ja, na immerhin funktioniert das. Danke! :)