gpt4 book ai didi

C++ Regex在线获取所有匹配项

转载 作者:行者123 更新时间:2023-11-30 03:58:50 30 4
gpt4 key购买 nike

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

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

关于C++ Regex在线获取所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27239108/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com