将第一个boost :: regex匹配放入一个字符串中

Tom*_*ica 1 c++ stdstring boost-regex

不知何故,我没有找到,如何只将第一次出现或正则表达式放入字符串.我可以创建一个正则表达式对象:

static const boost::regex e("<(From )?([A-Za-z0-9_]+)>(.*?)"); 
Run Code Online (Sandbox Code Playgroud)

现在,我需要匹配([A-Za-z0-9_]+)std::string,说playername.

std::string chat_input("<Darker> Hello");
std::string playername = e.some_match_method(chat_input, 1);   //Get contents of the second (...)
Run Code Online (Sandbox Code Playgroud)

我错过了什么?
什么应该代替some_match_method和应该采取什么参数?

Log*_*orn 6

你可以这样做:

static const regex e("<(From )?([A-Za-z0-9_]+)>(.*?)");
string chat_input("<Darker> Hello");
smatch mr;
if (regex_search(begin(chat_input), end(chat_input), mr, e)
    string playername = mr[2].str();   //Get contents of the second (...)
Run Code Online (Sandbox Code Playgroud)

请注意,正则表达式是C++ 11的一部分,所以你不需要对它进行提升,除非你的正则表达式很复杂(因为C++ 11和更新版本仍然难以处理复杂的正则表达式).