boost::regex re("(abc)(.*?)");
boost::smatch m;
std::string str = "abcdlogin";
boost::regex_search(str, m, re);
Я нашел m [1] .first это «abcdlogin», m [1] .second это «dlogin».
Но я думаю, что m [1] .first должен быть «abc»?
Как отмечено в документация:
м [п] .first: Для всех целых чисел n < m.size (), начало последовательности
что соответствует подвыражению п. В качестве альтернативы, если подвыражение n сделал
не участвуй в матче, значит последний.м [п] .second: Для всех целых чисел n < m.size (), конец последовательности
что соответствует подвыражению п. В качестве альтернативы, если подвыражение n сделал
не участвуй в матче, значит последний.
Обратите внимание, как они итераторы в соответствующее подвыражение.
В вашем примере, если вы хотите строку с "abc"
, вы можете построить строку следующим образом: std::string s(m[1].first, m[1].second);
,
Других решений пока нет …