当没有空格时,将函数名称提取到括号

时间:2014-01-16 14:38:46

标签: regex perl

我想只从函数定义中提取函数名,这些函数只在Perl

中使用
static int
function_name (...)

我的代码适用于以上示例

$source_line =~ /^(.*?)\s/

但是当函数名称

之后没有空格时,以下条件失败
static int
function_name(...)          

我如何才能提取单词直到“(”。

这应该仅适用于函数名称是句子开头的情况,如上例

中所示

2 个答案:

答案 0 :(得分:1)

我会使用此RegEx:^\w+\s*\(.*?\)。但RegEx真的不是解析这类事情的方法。如果你正在使用函数定义,这将匹配函数调用以及定义。你可以通过要求{}^\w+\s*\(.*?\)\s*\{[\s\S]+?\}匹配来缓解这个问题,但是如果在你的外层函数中有回调或函数会发生什么?这是事情变得冒险的地方。

答案 1 :(得分:1)

尝试\bzero width assertion

$source_line =~ /^(.+?)\b/