C ++正则表达式让所有匹配在线

时间:2014-12-01 23:12:04

标签: c++ regex c++11

当逐行阅读时,我会在每一行上调用此函数来查找函数调用(名称)。我使用这个函数来匹配任何有效字符az 0-9和_与'('。我的问题是我不完全理解c ++样式正则表达式以及如何让它查看整行以查找可能的匹配项?正则表达式很简单,而且直接前进只是没有按预期工作,但我正在学习这是c ++规范。

void readCallbacks(const std::string lines)
{
  std::string regxString = "[a-z0-9]+\(";
  regex regx(regxString, std::regex_constants::icase);
  smatch result;

  if(regex_search(lines.begin(), lines.end(), result, regx, std::regex_constants::match_not_bol))
  {
    cout << result.str() << "\n";
  }
}

1 个答案:

答案 0 :(得分:2)

您需要转义反斜杠或使用原始字符串文字:

std::regex pattern("[a-z0-9]+\\(", std::regex_constants::icase);
//                           ^^

std::regex pattern(R"([a-z0-9]+\()", std::regex_constants::icase);
//                 ###^^^^^^^^^^^##

此外,您的角色范围不包含所需的下划线(_)。