使用带有条件的正则表达式替换子字符串

时间:2014-03-03 11:07:58

标签: c++ regex boost

我需要替换匹配正则表达式的字符串中的每个子字符串,如下所示:

std::string result = boost::regex_replace("my# random *#string ##"
        , boost::regex("#([^#*]*[*][^#*]*)#")
        , tr);


    std::string tr(const boost::smatch &m) 
    { 
       std::string replaceString;
       bool ret = CheckIfWeNeedToReplace(m[0], replaceString);

       if (ret) 
          return replaceString; // replacing
       else
          return m[0];          // remain the same
    }

e.g。对于字符串"my# random *#string ##",有一个匹配正则表达式"#([^#*]*[*][^#*]*)#",即" random *",如果CheckIfWeNeedToReplace返回false,则字符串保持不变,如果不是 - 它将是像这样"my#NEW SUBSTRING#string ##"

我的代码不起作用,我做错了什么?

0 个答案:

没有答案