C++ регулярное выражение для получения сигнатуры функции
Я пытаюсь найти сигнатуру функции с помощью regex_search в C++. Вот что я использую
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, сложность и так далее... в ловушке, я узнал, что это был брошенный regex_paren. Я не понимаю, как решить это.
Пожалуйста, помогите мне в этом.
1 ответ
Хорошее место для проверки регулярных выражений - на regex101.com. Поместите туда свое выражение, оно жалуется на первое? с "Предыдущий токен не поддается количественной оценке". Как только я уберу это, оно будет соответствовать вашей тестовой строке.