Как понять, что часть Boost:: Regex не удалось найти / найти

Я использую 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 ответа

Решение

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

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

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

Другие вопросы по тегам