使用C ++ boost regex_match检测新行

时间:2016-06-14 16:46:55

标签: c++ regex boost

我正在尝试使用正则表达式删除字符串中的第一行。

我们知道,换行符取决于操作系统,所以我使用\r\n|\n|\r作为正则表达式。

唯一的问题是,我无法让它发挥作用..

int findMatchOffset(const std::string & iStr, const boost::regex & iExpression)
{
    boost::smatch aResults;
    if(boost::regex_match(iStr, aResults, iExpression))
    {
        return aResults.position();
    }
    return -1;
}

void removeFirstLine(std::string & ioMessageStr)
{
    boost::regex kNewLine("\r\n|\n|\r", boost::regex_constants::bk_vbar);
    int aIndex = findMatchOffset(ioMessageStr, kNewLine);

    ioMessageStr.erase(0, aIndex + 1);
}

你能发现上面代码中的错误吗?

regex_match返回false,为什么?

感谢您的帮助。

0 个答案:

没有答案