Я пытаюсь сопоставить некоторые куски, если интересные данные в потоке данных.Почему не увеличивает регулярное выражение '. {2}' match '??'
Должно быть ведущее <
, а затем четыре алфавитно-цифровых символа, два символа контрольной суммы (или ??
, если не указано ни одного shecksum), и завершающий >
.
Если последние два символа являются буквенно-цифровыми, следующий код работает, как ожидалось. Если они ??
, хотя это не удается.
// Set up a pre-populated data buffer as an example
std::string haystack = "Fli<data??>bble";
// Set up the regex
static const boost::regex e("<\\w{4}.{2}>");
std::string::const_iterator start, end;
start = haystack.begin();
end = haystack.end();
boost::match_flag_type flags = boost::match_default;
// Try and find something of interest in the buffer
boost::match_results<std::string::const_iterator> what;
bool succeeded = regex_search(start, end, what, e, flags); // <-- returns false
Я ничего the documentation, который предполагает, что это должно быть так, не заметил (все, кроме NULL и символ новой строки должен быть матч AIUI).
Так что я пропустил?
Какой компилятор вы используете? Mine (gcc) дает явное предупреждение о том, что «trigraph ??> convert to}». – SingerOfTheFall
Я использую визуальную студию 2013 с цепочкой инструментов 2008 года. –