В чем проблема с этим регулярным выражением? Суффикс от smatch всегда пуст - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть это регулярное выражение

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;
    }
}

Может быть, кто-то может помочь мне понять, почему мой суффикс всегда пуст? Если я удалю .*.*? с конца регулярного выражения, суффикс будет в порядке. Что значит .*.*?? Я также знаю, . означает любой символ, а * означает 0 или более.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...