[Noob Corner]
Здравствуйте, я пытаюсь поймать группу с помощью регулярного выражения Boost в зависимости от совпавшей строки, и я думаю, что использую неправильный способ.
boost::regex expr(R"(:?(:?\busername *(\S*))|(:?\bserver *(\S*))|(:?\bpassword *(\S*)))");
std::vector<std::string > vec = { "server my.server.eu", "username myusername", "password mypassword" };
for (auto &elem : vec)
{
if (boost::regex_match(elem, expr, boost::match_extra))
{
boost::smatch what;
boost::regex_search(elem, what, expr);
std::cout << "Match 1 (username) : " << what[1].str() << std::endl;
std::cout << "Match 2 (server) : " << what[2].str() << std::endl;
std::cout << "Match 3 (password) : " << what[3].str() << std::endl;
}
}
Я хочу что-то вроде:
server my.server.eu
Соответствие 1 (имя пользователя): NULL
Соответствие 2 (сервер): my.server.eu
Соответствие 3 (пароль): NULL
Я искал в Интернете, но не нашел четких ответов относительно идентификации групп захвата.
Спасибо
(?:
, а не(:?
, верно? Извините, ваш вопрос несколько неясен. - person Wiktor Stribiżew   schedule 03.11.2016expr(R"(\b(?:username *(\S*)|server *(\S*)|password *(\S*)))")
. При тестировании получаюMatch 1 (username) : // Match 2 (server) : my.server.eu // Match 3 (password) :
- person Wiktor Stribiżew   schedule 03.11.2016