Как понять, что часть 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, он должен быть в базовых репозиториях.