2010-03-30 5 views
1

Я пытаюсь написать некоторый код C++, который проверяет, является ли строка в определенном формате. В этой программе есть высота, за которой следуют некоторые десятичные числа: например «высота 123.45» или «высота 12» вернет true, но «SomeOtherString 123.45» вернет false.Basic Boost Regex question

Моя первая попытка в этом было написать следующее:

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 
} 

Однако height_format_matches никогда не казалось, чтобы быть правдой. Любая помощь очень ценится!

ответ

4

Оставьте нижнюю косую черту, и она должна работать. Вероятно, остался с JavaScript-регулярным выражением? В JavaScript регулярные выражения часто ограничиваются косой чертой; в C++ они просто строки. Если вы держите косую черту там, где она есть, движок регулярного выражения получает указание совпадения с косой чертой после конца строки ($), что всегда терпит неудачу.

+0

Спасибо! Это была проблема, возникшая при переносе кода. Заключительная косая черта меня полностью сбила с толку. – shuttle87