当逐行阅读时,我会在每一行上调用此函数来查找函数调用(名称)。我使用这个函数来匹配任何有效字符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";
}
}
答案 0 :(得分:2)
您需要转义反斜杠或使用原始字符串文字:
std::regex pattern("[a-z0-9]+\\(", std::regex_constants::icase);
// ^^
std::regex pattern(R"([a-z0-9]+\()", std::regex_constants::icase);
// ###^^^^^^^^^^^##
此外,您的角色范围不包含所需的下划线(_
)。