Как я могу использовать регулярные выражения для специальных целей - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть следующий текст:

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"]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...