Основной вопрос по регулярному выражению Boost - PullRequest
1 голос
/ 30 марта 2010

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

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

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 никогда не казалось правдой. Любая помощь с благодарностью!

1 Ответ

4 голосов
/ 30 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...