用于获取函数签名的 C++ 正则表达式

标签 c++ regex c++11 function-signature

我正在尝试使用 C++ 中的 regex_search 搜索函数签名。这是我正在使用的

std::smatch m;

std::regex e("?(unsigned|signed|const|inline)?\\s?(bool|char|int|float|double|void|wchar_t|string)\\s?[*]?(\\w.*)[(](.*)[)]\\s?{?$");

if(regex_search(xmlFileLine, m, e)) {

cout << xmlFileLine << endl;

}

在上面的代码中,'xmlFileLine' 是一个从 getline 读取输入文件的每一行的字符串。例如,我要匹配的字符串是 “int Testo::Fact(int n) {”

当我在 try 中执行上面的正则表达式并设置了所有 regex_error 标志,如 paren、complexity 等等...在 catch 中,我知道它是 regex_paren 抛出的。我不知道如何解决它。

请帮我解决这个问题。

最佳答案

测试正则表达式的好地方是 正则表达式101.com 把你的表情放在那里,它提示第一个?和 “前面的 token 不可量化”。 一旦我删除它,它就会匹配您的测试字符串。

关于用于获取函数签名的 C++ 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36879334/

相关文章:

javascript - 正则表达式在 javascript replace() 方法中同时捕获 '?' 和 '%3f'

python - REGEX 字符串和转义引号

c++ - 类模板特化优先级/歧义

c++ - std::conditional 未被评估

c++ - 最佳实践引用

c++ - OR 工具 C++ : solver. MutableObjective() 返回 null

c++ - 获取启动时崩溃的进程的转储

c++ - 在 C++ 中使用 protobuf 和 POCO

c++ - GUI系统开发资源?

javascript - 正则表达式匹配似乎不适用于 javascript