У меня есть следующий текст:
Hello, #name. I have a letter for #name #surname ...
Мне нужно получить все позиции и длину макросов, как это #name
, #surname
и заполнить их специальной структурой:
struct UserMacros
{
struct Data
{
ssize_t pos = std::string::npos;
size_t length = 0u;
};
std::vector<Data> names;
std::vector<Data> surnames;
};
Я написал для него регулярное выражение: (\b#name\b|\b#surname\b)
Но как я могу использовать std :: regex или boost :: regex для заполнения UserMacros
структуры?
Пример моего код:
UserMacros macros;
static const boost::regex macroPattern("(\b#name\b|\b#surname\b)");
auto macrosesBegin = boost::sregex_iterator(string.begin(), string.end(), macroPattern);
auto macrosesEnd = boost::sregex_iterator();
for (auto it = macrosesBegin; it != macrosesEnd; ++it) {
boost::smatch match = *it;
macros.names.push_back(match["name"]);
macros.surnames.push_back(match["surnames"]);
}