使用CSharp 提取 C/C++ 原始碼中提取函數定義
在大型專案 要去分析程式修改範圍或是C/C++程式的有哪些函式總是困擾 使用以下正則表達式從 C/C++ 源程式文件中提取函數定義: Regex regex = new Regex(@"\b((virtual|static|inline|__forceinline|__inline|__inline__)*\s+)*([\w<>_]+\s+[*&]*\s*)([\w_]+)\s*\((.*?)\)\s*({?)", RegexOptions.Multiline); 以下是正則表達式的簡要說明: \b:匹配一個單詞邊界 ((virtual|static|inline|__forceinline|_inline|inline)\s+):匹配列出的關鍵字(virtual、static、inline、__forceinline、__inline、inline)和空格字符(如空格或制表符)的任意組合。 ([\w<>_]+\s+[&]\s):匹配函數的返回類型,可以包括模板參數以及返回類型的指針或引用。 ([\w]+):匹配函數名。 \s*((.?))\s:匹配括號內的參數列表,包括括號前後的任何空格字符。.*?以非貪婪的方式匹配任何字符,因此它會在遇到第一個閉括號時停止匹配。 ({?):匹配函數體的左大括號,如果有的話。 請注意,此正則表達式假設源程式文件格式良好,沒有任何語法錯誤。它也不能處理所有可能的 C/C++ 函數定義變體,例如使用函數指針或變長參數的函數定義。 ...