Как понять, что часть Boost :: Regex не удалось найти / найти - PullRequest
2 голосов
/ 13 июля 2011

Я использую boost::regex для сопоставления (лучше сказать boost::regex_search) текста с регулярным выражением.

Этот не соответствует, и мое регулярное выражение действительно огромно.

Знаете ли вы, есть ли в библиотеке какая-либо функция, сообщающая мне, какая часть регулярного выражения не соответствует?

Я использую LINUX / GCC

     std::string text; // whatever
     boost::regex rgx( "(\\w+) (\\d+) (\\s+)" );
     boost::smatch m;
     if( !boost::regex_search( text, m, rgx ) ){
         // how to know where (\\w+) or (\\d+) or (\\s+) failed?
     }

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Насколько мне известно, в библиотеке нет инструмента для этого, но я использовал Boost версии 1.28.0.

Вы пытались выполнить (\ w +), (\ d +) и (\ s +) независимо друг от друга?По крайней мере один из них должен не соответствовать.

0 голосов
/ 13 июля 2011

Схватить кики как можно скорее.Это бесценный инструмент для тестирования и игры с регулярными выражениями.
Если вы используете дистрибутив на основе Debian, он должен быть в базовых репозиториях.

...