Я написал следующий простой пример:
#include <iostream>
#include <string>
#include <regex>
int main ()
{
std::string str("1231");
std::regex r("^(\\d)");
std::smatch m;
std::regex_search(str, m, r);
for(auto v: m) std::cout << v << std::endl;
}
и запутался в его поведении. Если я правильно понял цель match_result
из , то должен был быть напечатан только один 1
. На самом деле:
В случае успеха он не пуст и содержит серию sub_match объектов: элемент first sub_match соответствует всему совпадению,и, если выражение регулярного выражения содержит подвыражения, которые должны быть сопоставлены ([...])
Строка, переданная функции, не соответствует регулярному выражению, поэтому мы должны не иметь the entire match
.
Что я пропустил?