正则表达式匹配是真的,但返回奇怪的符号

时间:2016-11-28 13:29:46

标签: c++ regex linux ubuntu boost

我在ubuntu 16.04 LTS上使用boost 1.62。 我在使用boost 1.53的Scientific Linux 7.2上使用相同的代码和文件,它正在运行。

这是代码的一部分:

boost::cmatch what ;
const boost::regex exp ("(\\w+).txt",boost::regex::perl);
  if(boost::regex_match((*roc).second->getCalibrationFilePath().c_str(), what, exp, boost::match_extra))
        { 
           std::cout<<__PRETTY_FUNCTION__<< " (*roc).second->getCalibrationFilePath().c_str() " << (*roc).second->getCalibrationFilePath().c_str() << std::endl;
            std::cout<<__PRETTY_FUNCTION__<<     "what[1] " <<       what[1] << std::endl;
            std::cout<<__PRETTY_FUNCTION__<<     "exp " <<       exp << std::endl;
            calibrationFileRadix = what[1];
        }
        else
        {
            STDLINE("ERROR: Can't find the extension .txt in " + (*roc).second->getCalibrationFilePath(), ACRed);
            continue;
        }  

应匹配的文件名类似于/path/file_name.txt,我希望将file_name.txt作为[1]。

我得到的输出是:

bool calibrationLoader :: loadAllCalibrationFiles()(* roc).second-&gt; getCalibrationFilePath()。c_str()CalGain_downstream_2016_04_05_3_0_4.txt

bool calibrationLoader :: loadAllCalibrationFiles()[1]pO���

bool calibrationLoader :: loadAllCalibrationFiles()exp(\ w +)。txt

bool calibrationLoader :: loadAllCalibrationFiles()(* roc).second-&gt; getCalibrationFilePath()。c_str()CalGain_downstream_2016_04_05_3_0_4.txt

bool calibrationLoader :: loadAllCalibrationFiles()[1]

bool calibrationLoader :: loadAllCalibrationFiles()exp(\ w +)。txt

谢谢!

ADD

我在http://www.regextester.com/测试了这个正则表达式:它使用(\ w +)。txt而不是(\ w +)表现出预期.txt

0 个答案:

没有答案