0
文件函數定義和函數聲明perl的 - 只能從函數的定義從函數聲明中提取,而不是
eErrorT ChainCtrlUpdateCameraRoute(ChainCtrlT* pChainCtrl, RouteListItemT* pNewRoute, RouteListItemT* pCurrRoute);
eErrorT ChainCtrlSetJpgSnapshotFile(ChainCtrlT* pChainCtrl, RouteListItemT* pRoute, char * dst_chain, char *jpg_file_path)
{
}
我的代碼
use strict;
use warnings;
use vars qw(@temp $index $i);
open(my $FILE, "< a.c") or die $!;
my @arr = <$FILE>;
foreach(@arr){
if($_ =~ /^ \S+ \s+ \S+ \s* \((.+?) \) /xsmg) { # extracts function arguments
my $arg = $1;
my @arr = map /(\w+)$/, split /\W*?,\W*/, $arg;
print @temp = map "$_\n", @arr;
}
}
GIVES輸出
pChainCtrl
pNewRoute
pCurrRoute
pChainCtrl
pRoute
dst_chain
jpg_file_path
輸出的必需
pChainCtrl
pRoute
dst_chain
jpg_file_path
我需要僅從函數定義(ChainCtrlSetJpgSnapshotFile)中提取參數,而不是聲明(ChainCtrlUpdateCameraRoute)。
我需要看是否帶(..)的行沒有「;」在同一行。但我無法得到它的正則表達式命令
''//'不是Perl中的註釋,使用'#'表示。 '//'是「定義或」運算符。 – TLP
這只是解釋代碼..實際代碼是比這更大。我只是給你一個樣本,我被卡住了 –
爲什麼你不在一個負面的前瞻斷言中添加一個分號? '(?!\ s *;)' – TLP