У меня есть это регулярное выражение
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 или более.