2013-05-20 34 views
1

我想從一個Perl文件中的C文件中抓取所有函數。Perl - 模式包含新行

圖案舉例:

function return type 
function name (function parameters) 
{ 

到目前爲止,我有:m/^(.*)\((.*)\)/

但這抓住函數中爲好,如if聲明,所以我希望以匹配{以及自認爲會消除所有內部功能,但m/^(.*)\((.*)\)/\n\{/ 不起作用。

如何匹配的\n{{中的下一行,讓我能趕上

add(int a, int b) 
{ 

...但要避免,說

if(a = b) 
+0

我不認爲這將是非常可靠的使用'\ N'在你的程序來分析的輸入數據。記住在C中,你可以很容易地擁有一行代碼功能,甚至可以在同一行上創建兩行代碼。 – mogul

+0

@mogul實際上我想匹配{在下一行中抓取被定義的函數而不是正在使用的函數。 – Venkat

回答

1

在C源代碼中沒有要匹配的星號。因此,在模式中的星號之前刪除反斜槓。

下可能會更接近你想要什麼:

m/^(.*?\(.*?\))\s*\n{/m 
+0

哦對不起,這更多的是從我的系統複製我的代碼到這裏。澄清我的問題是我想匹配{在下一行。 – Venkat

+0

我試過你的正則表達式,它似乎沒有擊中我的示例代碼..也是什麼「\ s *」完成? – Venkat

+1

好吧傻,我正在逐行閱讀文件。 – Venkat