C++正则表达式让所有比赛都在线

C++ Regex getting all match's on line

本文关键字:在线 正则表达式 C++      更新时间:2023-10-16

当逐行读取时,我在每一行上调用此函数以查找函数调用(名称)。 我使用此函数将任何有效字符 a-z 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";
  }
}

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

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

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