如何告诉C ++正则表达式被视为纯文本/转义所有字符

时间:2012-06-23 13:10:52

标签: c++ regex std

我正在使用c ++函数来实现字符串替换。功能如下:

using namespace std;

string Replace(const string & str, const string & strOld,
            const string & strNew, bool useRegex, bool caseSensitive)
{
    regex::flag_type flag=regex::basic;
    if(!caseSensitive)
         flag |= regex::icase;

    if(!useRegex)
        // WHAT TO DO ?

    std::regex rx(strOld,flag);
    string output=regex_replace(str,rx,strNew);
    return output;
}

它会将strOldstr的所有strNew替换为std::regex。我尝试使用std::regex_replaceuseRegex来实现它。如果useRegex为真,它的效果很好。但是,如果falsestrOld,我无法告诉他们string output=Replace("hello.",".","?",false,true); 只是一个纯字符串而不是正则表达式字符串。

例如,当我打电话时:

"??????"

它会返回"hello?",而我希望它为{{1}}。

1 个答案:

答案 0 :(得分:1)

中途解决方案是预处理正则表达式并手动转义所有元字符。如果C ++ 11中缺少此功能,那么这是最好的解决方案,而这些功能来自于评论听起来像是。