2010-03-30 4 views
1

J'essaye d'écrire du code C++ qui teste si une chaîne est dans un format particulier. Dans ce programme, il y a une hauteur suivie de quelques chiffres décimaux: par exemple "height 123.45" ou "height 12" retournera vrai mais "SomeOtherString 123.45" retournera false.Basic Boost Regex question

Ma première tentative de c'était d'écrire les suivantes:

string action; 
cin >> action; 
boost::regex EXPR("^height \\d*(\\.\\d{1,2})?$/") ;//height format regex 
bool height_format_matches = boost::regex_match(action, EXPR) ; 
if(height_format_matches==true){ 
    \\do some stuff 
} 

Cependant height_format_matches n'a jamais semblé être vrai. Toute aide est grandement appréciée! Abandonner la barre oblique et cela devrait fonctionner.

Répondre

4

Probablement quitté d'une regex JavaScript? En JavaScript, les expressions régulières sont souvent délimitées par des barres obliques; en C++, ce sont simplement des chaînes. Si vous gardez la barre oblique là où elle est, le moteur regex est invité à faire correspondre une barre oblique après la fin de la chaîne ($), ce qui échoue toujours, bien sûr.

+0

Merci! C'était en fait un problème qui a surgi lors du portage du code. Le slash traînant m'avait totalement perplexe. – shuttle87