C++ 这个正则表达式有什么问题?smatch的后缀始终为空

C++ 这个正则表达式有什么问题?smatch的后缀始终为空,c++,regex,C++,Regex,我有这个正则表达式 int main () { const std::string rna = "Feb 11 16:55:35.127897 oms1_OMSController Data: <RBC rbcID=9001><ChannelStates rbcTimeStamp=20200211152135Z><channelStateList><CS channelID=RCS0-OMS-Diag available=no/></

我有这个正则表达式

int main ()
{
    const std::string rna = "Feb 11 16:55:35.127897 oms1_OMSController Data: <RBC rbcID=9001><ChannelStates rbcTimeStamp=20200211152135Z><channelStateList><CS channelID=RCS0-OMS-Diag available=no/></channelStateList></ChannelStates></RBC>" ;
    const boost::regex re( "^([[:alpha:]]{3})[[:space:]]+([[:digit:]]+) ([[:digit:]]{2}):([[:digit:]]{2}):([[:digit:]]{2})(\\.[0-9]{6})? ([[:alnum:]_\\.]*) (([[:alpha:]]{3})[[:space:]]+([[:digit:]]+) ([[:digit:]]{2}):([[:digit:]]{2}):([[:digit:]]{2})(\\.[0-9]{6})? ([[:alnum:]_\\.]*))?.*.*?" ) ;

    boost::smatch match ;
    if( boost::regex_search( rna, match, re ) )
    {
        std::cout << "SUFFIX " << match.suffix().str() << std::endl;
        for(auto i = match.begin(); i != match.end(); i++)
            std::cout << *i << std::endl;
    }
}
int main()
{
const std::string rna=“2月11日16:55:35.127897 oms1_oms1控制器数据:”;
(3)(数字::::[数字::::[数字:::::::::::[数字:::::[数字:::::{{{{2}::::::::::数字:::{{2}::)以下以下以下:regex:ReReReReReReReReReReRe((((((([[[[[[[[[[[[[[[[::::::α::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::{{{{{{{{{2})2}})))))))))))以下以下以下以下以下以下([[:alnum:][\\\.]*)?.*?);
小比赛;
if(boost::regex_搜索(rna、match、re))
{

std::cout在大多数正则表达式引擎中
*?
表示非贪婪匹配,这意味着从该模式中获取最少的量以至少匹配它。将其前缀加上
*
有点奇怪。您尝试过吗?您期望什么?
匹配.suffix().str()
返回从找到的匹配结束到匹配或搜索的字符串结束的字符序列。
*
将匹配所有内容,以便匹配结束和字符串结束相同。