我想只从函数定义中提取函数名,这些函数只在Perl
中使用static int
function_name (...)
我的代码适用于以上示例
$source_line =~ /^(.*?)\s/
但是当函数名称
之后没有空格时,以下条件失败static int
function_name(...)
我如何才能提取单词直到“(”。
这应该仅适用于函数名称是句子开头的情况,如上例
中所示答案 0 :(得分:1)
我会使用此RegEx:^\w+\s*\(.*?\)
。但RegEx真的不是解析这类事情的方法。如果你正在使用函数定义,这将匹配函数调用以及定义。你可以通过要求{}
与^\w+\s*\(.*?\)\s*\{[\s\S]+?\}
匹配来缓解这个问题,但是如果在你的外层函数中有回调或函数会发生什么?这是事情变得冒险的地方。
答案 1 :(得分:1)
尝试\b
,zero width assertion,
$source_line =~ /^(.+?)\b/