2016-04-27 6 views
1

Я пытаюсь найти сигнатуру функции, используя regex_search в C++. Вот что я используюC++ regex для получения функции подписи

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, complex и т. Д. .. в ловушке, я узнал, что это было regex_paren брошено. Я не понимаю, как его решить.

Пожалуйста, помогите мне в этом.

+0

Вы спрашиваете, как найти подпись функции или как исправить это регулярное выражение? – immibis

ответ

0

Хорошее место для проверки регулярных выражений на regex101.com Располагая свое выражение там, оно жалуется на первое? с «Предшествующий токен не поддается количественной оценке». Как только я удалю это, он соответствует вашей тестовой строке.